加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 这个组合是否违反了面向对象编程的任何原则?

发布时间:2020-12-15 23:23:25 所属栏目:百科 来源:网络整理
导读:说我有以下两个类: 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(MyDev
说我有以下两个类:

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命令.

我是否违反了面向对象编程的任何原则/这个代码闻到了什么?

编辑:

明确地说:在面向对象设计方面,转变它的关系是一个很大的禁忌吗?如果是这样,忽略/忽略的单一原则是什么?

解决方法

我假设示例说Device是它的意思是MyDevice.您基本上可以引用父级即设备.我认为这不会破坏OO并且在许多情况下是有用的.纯粹主义者会说它打破了父母的封装,并创建了从通道到通道外的任何东西的耦合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读