设计模式(简述)
设计模式的分类
根据目的可以分为创建型、结构性和行为型三类:
- 创建型模型:创建对象
- 结构性模型:处理类或对象的组合
- 行为型模式:用于描述对类或对象怎样交互和怎么分派职责
根据范围可以分为类模式和对象模式:
- 类模式:处理类和子类之间的关系,这些关系通过继承建立,在编译时就确定了,属于静态
- 对象模式:处理对象间的关系,这些关系在运行时变化,属于动态
设计模式的设计原则
设计模式有七大原则:开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、迪米特原则、合成复用原则、单一职责原则:
1.开闭原则
对扩展开放,对修改关闭,是设计模式的核心原则,实现开闭原则的关键就是抽象化。
2.里氏替换原则
所有引用基类的地方必须能够透明地使用其子类对象,即子类能够并且必须能够替换基类所出现的地方,子类也能在基类的基础上新增行为。即如果能够使用父类对象的时候一定可以替换并使用其子类对象,反过来不成立。
3.依赖倒转原则
高层模块不应该依赖底层模块,他们都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象,总的来说就是依赖倒转原则要求客户端依赖于抽象耦合。即:
- 抽象不应该依赖细节,细节依赖抽象
- 要针对接口编程,不针对实现编程
4.接口隔离原则
客户端不应该依赖那些它不需要的接口,一旦一个接口太大,则需要将它分割成一些更细小的接口,使用接口的客户仅需要与之相关的方法即可。
5.迪米特原则
又叫最少知识原则:
- 不要和“陌生人”说话
- 直接与你的“朋友”通信
- 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位
一个对象应该对其他对象有尽可能少的了解,一个类应该对自己需要耦合或调用的类知道的越少越好。
6.合成复用原则
尽量使用对象组合,而不是继承来达到复用的目的。在一个新的对象中使用一些已有的对象,是之成为新对象的一部分,新对象通过向这些对象的委派达到服用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量不要使用继承。
7.单一职责原则
一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。