设计模式的用途
设计模式主要有两个用途:
值得注意的是,这些原则并不需要完全遵守。出于实际需求考量,很可能有某个设计模式打破了部分原则。不过原则在思想上仍然有其价值,在进行程序设计的时候应该尽可能地考虑到这些原则
开闭原则
软件实体应当对扩展开放,对修改关闭
即在程序需要进行拓展的时候,不能修改原有代码,实现热插拔的效果。我们需要通过接口和抽象类进行实现。
软件实体包括:
- 项目中划分出的模块
- 类与接口
-
里氏代换原则LSP
任何基类可以出现的地方,子类就可以出现。LSP是继承复用的基石,只有当派生类可以替换掉基类,且软件的功能不受影响的时候,基类才是真正被复用。LSP是对开闭原则的补充。
依赖倒转原则
该原则是开闭原则的基础。针对接口编程,依赖于抽象而不依赖于具体。即将抽象层放在程序设计的高层,并保持稳定,程序的细节由低层的实现层完成。
这里的抽象,通常指接口或者抽象类。接口隔离原则
使用多个隔离的接口,比使用单个接口好。即降低类之间的耦合度。
最少知道原则(迪米特法则)
一个实体,应当尽量少地与其他实体之间发生相互作用,不应该知道自己操作的类的细节,使得系统功能模块相对独立。
合成复用原则
通常,类的复用分为继承复用与合成复用。尽量使用合成/聚合的方式,而不是使用继承。
继承复用的缺点: 破坏了类的封装性。因为父类对子类是透明的
- 子类和父类的耦合度高,父类的改变将造成子类的变化,不利于扩展维护
限制了复用的灵活性,继承的实现是静态的,在编译时决定的,运行时不可能发生变化
单一职责原则
规定一个类应该
有且仅有一个引起它变化的原因,否则类就应该被拆分
承担过多的职责的缺点:一个职责的变化可能会削弱/抑制其他职责的能力
- 若只需要部分的职责而使用该对象,则会将其他职责涵盖进来,造成冗余
该原则的核心也是解耦合,高内聚,其优点:
分类
- 创建型模式:用于描述“怎样创建对象”,将对象的创建与使用进行分离
- 结构型模式:如何将类或者对象按照某种布局组成更大的结构
- 行为型模式:用于描述类或者对象之间怎样分配职责,相互协作共同完成单个对象无法完成的任务
关系
名词解释
- 热插拔:又名热替换、热添加。即允许在不关闭系统、不切断电源的情况下,进行扩展
