C#设计模式学习6——职责型模式介绍
职责型模式包括:单件模式,观察者模式,中介者模式,职责链模式以及享元模式。
职责型模式
对象的方法可以理解为一个对象的职责,而把多个对象的职责进行集中就是职责型模式。
它提供了将对象职责集中化以及将对象职责逐级上报的技术,同时还提供了限制普通对象职责的技术。
面向对象建模时如何设计定义好一个类的职责?
简单的说,就是类的名称以及类的方法名称能够精确说明这个类完成了什么工作。
如何限制各个类的职责?
不同的类和类中不同的方法是具有不同的职责的。不同的职责根据具体的需求是需要进行不同程度限制的。我们可以利用C#提供的可访问性机制对类的职责进行限制。
public:对访问不限制
protected internal:写在同一文件中的类,以及继承该类的子类
protected:本身的类,以及继承该类的子类
internal:仅限于写在同一文件中的类
private:仅限于本身的类
注:需要实际的程序检验,尤其带有internal修饰符的
如何合理的分配类的职责?
在一个面向对象的系统中,如何进行职责的分配也是很重要的。也就是说系统中哪个类完成什么样的职责,是需要在设计中合理分配的。
单件模式:将职责集中到某个类的一个单独实例
观察者模式:当一个对象发生改变时,依赖于这个对象的其他对象能够得到通知,而这个发生改变的对象无需了解自己被其他哪些对象使用
中介者模式:将职责集中到一个类,这个类可以监视其他对象的交互
代理模式:令一个对象为其他对象服务
职责链模式:允许一个请求使一个对象链向上级传递,直到这个请求被某个对象处理
享元模式:将共享的细粒度对象的职责进行集中
Difficulty of making decision depends on what to lose not gain