学习设计模式的宗旨是为了提高代码的扩展性和阅读性,易于系统的日后维护。我们在进行功能设计时都应遵循下面的三个原则:
- 单一职责原则,一个类只承担一种职责,如果承担的事情过多,就等于把这些职责耦合在一起。
- 开放-封闭原则,类可以扩展,但是不可修改,即对扩展是开放的,对修改是封闭的。
- 依赖倒转原则,高层模块不应该依赖细节,细节要依赖抽象。
dfsd
- 简单工厂模式
把对象的创建从业务逻辑中分离出来,使得业务逻辑和对象的创建解耦,专门使用一个工厂类来创建需要使用到的对象,该对象中包含相应业务逻辑。
- 工厂方法模式
定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类完成。
简单工厂模式中我们使用一个工厂类创建了所有的对象,在日后为了应对业务的拓展添加新的类,那这时需要修改工厂类,为创建新的对象添加一个分支。这时不但对扩展开发,对修改也开发了,这就违背了开发-封闭原则。但工厂方法时,只需扩展一个业务类,和一个该业务类的相应工厂类, 无需修改原有的类。这就是简单工厂模式和工厂方法模式的区别所在
- 装饰模式
为了完成一个工作,使用装饰器为原有对象动态的添加某些功能,这些新添加的功能协助原有对象完成某项工作。而这些装饰器的装饰顺序是可以调换。
- 代理模式
为一个对象提供代理以控制对这个对象的访问,或者为了在原来的业务逻辑上添加或去除一些业务逻辑,但不想修改原有的业务,可以使用代理模式。这就是代理模式。
- 外观模式
为一个功能模块设计一个统一的对外接口,降低功能模块间的耦合度。
- 建造者模式
将一个复杂对象的表示和它的创建分离开来,使得同样的构造过程可以创建出不同的表示对象。
观察者模式
一种一对多的依赖关系,让多个观察者可以监听主题的变化。当主题状态发生变化时,及时的通知到多个观察者,让观察者可以做出更新。状态模式
当一个对象的行为根据它的状态的不同而有所改变时,那么执行对象的行为就需要大量的逻辑来判断对象的状态并执行不同的操作。
而状态模式就是把对象的状态和该状态的行为封装为状态类,并在具体的状态类中添加状态的判断条件,