有关数据封装的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