假设我有以下两个类:
public class MyDevice
{
int id;
string name;
// other resources
public MyChannel CreateChannel()
{
return new MyChannel(this);
}
}
public class MyChannel
{
int id;
MyDevice _device;
// other resources
public MyChannel(MyDevice device)
{
_device = device;
}
}
实际上,每个设备都可以拥有不同数量的通道。因此,每个设备都有一个通道集合。让我感到困扰的是,代码中的
MyChannel
对象拥有一个 MyDevice
对象。然而,代码中定义的关系更为方便,我也希望保持简单。为了平息我内心的疑虑,我一直指向
SqlConnection
和 SqlCommand
的结构,其中每个 SqlCommand
对象都拥有一个 SqlConnection
对象,尽管每个 SQL 连接都拥有一系列 SQL 命令。我是否违反了面向对象编程的任何原则/这段代码是否存在问题?
明确地说,将 has-a 关系颠倒过来在面向对象设计方面是否是大忌?如果是,哪个原则被忽视或忽略了?