设计模式
单一职责原则
单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。定义为应该有且仅有一个原因引起类的变更。
里氏替换原则
里氏替换原则(Liskov Substitution Principle,LSP),**所有引用基类的地方必须能透明地使用其子类的对象。**通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。
依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)含义:
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象;
- 抽象不应该依赖细节;
- 细节应该依赖抽象。
依赖倒置原则在Java语言中的表现就是:
- 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;
- 接口或抽象类不依赖于实现类;
- 实现类依赖接口或抽象类。
更加精简的定义就是“面向接口编程”——OOD(Object-Oriented Design,面向对象设计)的精髓之一。
接口隔离原则
接口隔离原则(Interface Segregation Principle,ISP)包含以下4层含义:
- 接口要尽量小;
- 接口要高内聚;
- 定制服务;
- 接口设计是有限度的。
在实践中可以根据以下几个规则来衡量:
- 一个接口只服务于一个子模块或业务逻辑;
- 通过业务逻辑压缩接口中的public方法,尽量细化接口,接口中的方法尽量少;
- 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理;
- 了解环境,拒绝盲从。每个项目或产品都有特定的环境因素,环境不同,接口拆分的标准就不同。
迪米特法则
迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP),虽然名字不同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,尽量降低类与类之间的耦合。
开闭原则
开闭原则(Open-Closed Principle,OCP)其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。
合成复用原则
合成复用原则(Composite/Aggregate Reuse Principle,CARP)指尽量使用对象组合的方式实现代码复用,而不是使用继承关系达到代码复用的目的。
创建型设计模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 单例模式
- 原型模式
- 建造者模式
结构型设计模式
- 代理模式
- 门面模式
- 装饰器模式
- 享元模式
- 组合模式
- 适配器模式
- 桥接模式
行为型设计模式
- 委派模式
- 模板方法模式
- 策略模式
- 责任链模式
- 迭代器模式
- 命令模式
- 状态模式
- 备忘录模式
- 中介者模式
- 解释器模式
- 观察者模式
- 访问者模式