设计模式
设计原则
1、单一职责原则
单一职责又叫【Single Responsibility Principle】,简称SRP,一个类或者一个接口只干一件事,或者一类事情。
优点:
- 类的复杂度降低
- 可读性提高
- 可维护性提高
- 变更引起的风险降低
2、里氏替换原则(LSP)
通俗点讲只要父类能出现的地方我子类就可以出现,而且调用子类还不产生任何的错误或异常,调用者可能根本就不需要知道是父类还是子类。但是反过来就不成了,有子类出现的地方,父类未必就能适应,里氏替换法则包含了四层意思:
- 子类必须完全的实现父类的方法
- 子类可以有自己的个性
- 覆盖或实现父类的方法时输入参数可以被放大
- 覆盖或实现父类的方法是输出结果可以被缩小。
3、依赖倒置原则
依赖倒置原则【 Dependence Inversion Principle】
4、接口隔离原则
建立单一接口,不要建立臃肿庞大的接口。再通俗的一点讲:接口尽量细化,同时接口中的方法尽量的少。接口隔离原则是对接口进行规范约束,其包含以下四层含义:
- 接口尽量要小
- 接口要高内聚。 什么是高内聚?高内聚就是提高接口、类、模块的处理能力,减少对外的交互,
- 定制服务。
- 接口设计是有限度的
5、迪米特法则
迪米特法则【 Low Of Demeter】,迪米特法则也叫做做最少知识原则(Least Knowledge Principle,简称 LKP)说的都是一会事,一个对象应该对其他对象有最少的了解,通俗的讲一个类对自己需要耦合或者调用的类应该知道的最少。迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高,其要求的结果就是产生了大量的中转或跳转类迪米特法则包含以下四层意思:
- 只和朋友交流
- 朋友间也是有距离的。
- 是自己的就是自己的
- 谨慎使用 Serializable
6、开闭原则
一个软件实体应该对扩展开放,对修改关闭
设计原则比较
设计原则 | 解释 |
---|---|
开闭原则 | 对扩展开放,对修改关闭。 |
依赖倒置原则 | 通过抽象使各个类或者模块不相互影响,实现松耦合。 |
单一职责原则 | 一个类、接口、方法只做一件事。 |
接口隔离原则 | 尽量保证接口的纯洁性,客户端不应该依赖不需要的接口。 |
迪米特法则 | 又叫最少知道原则,一个类对其所依赖的类知道得越少越好 |
里氏替换原则 | 子类可以扩展父类的功能但不能改变父类原有的功能。 |
合成复用原则 | 尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的 |
设计模式分类
总体来说设计模式分为三大类:
- 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
参考《大话设计模式》,《设计模式之禅》。