有关数据封装的C#设计问题

我有四个班级:
1:拥有数据的一个
2:另一个更新数据
3:第一个由第一个人通知数据的某些变化
4:最后一个从第一类读取某些属性

我不想要其他课程,但第二个课程能够更新数据。
那么在这里使用最好的设计模式是什么?

更多关于这个问题:
第一类称为模式,它拥有使用该模式的实例数的计数器。
第二类称为Factory,它创建/删除这些实例,因此我需要更新Schema实例计数器并在必要时创建新的Schema对象。
第三类称为Config,它包含各种共享配置,包括有关每个新Schema对象的信息。
第四类称为视图,它只是查看架构信息。
模式对象可以通过ID存储在静态列表中来访问。


从程序代码切换到面向对象的代码,并将两个第一类合并成一个具有数据和行为的类。


这是对您的场景的非常抽象的描述,并且很难看到您的问题以及您想要做什么。

当谈到'oop'时,你通常会有一个描述对象的类。 就你而言,你的对象是'数据'。 因此,你的第一类应该是数据并封装对这些数据的任何操作。

类描述对象 - 它们不是函数的集合。 这听起来像你的第二课只是一个功能的集合。

您需要进一步描述您的情况,因为目前它确实没有多少解释。


这里不需要设计模式。 只是一些原则。

想法很简单:

对象由其行为定义
对象只修改它自己的状态
对象保护其状态

public class SecondClass{
  public FirstClass First{get;private set;}
  public ThirdClass Third{get; private set;}
  public void DoSomething(){
    First.Something++;
    Second.NotifySomethingHasBeenDone();
  }
}

如果二级和三级之间的关系不是那么直接,您可能想要使用事件来通知:

public class SecondClass{
  public FirstClass First{get;private set;}
  public void DoSomething(){
    First.Something++;
    RaiseEvent<SomethingHasBeenDone>(this);
  }
}

public class ThirdClass:IHandles<SomethingHasBeenDone>{
  public void Handle(SomethingHasBeenDone @event){
    MessageBox("First has {0} something".With(@event.First.Something));
  }
}
链接地址: http://www.djcxy.com/p/6927.html

上一篇: C# Design Problem Regarding Data Encapsulation

下一篇: Check if server is accessible via IPv6?