## 设计模式
###### 面向对象的设计原则
- 对接口编程,不要对实现编程
- 使用对象之间的组合,减少对继承的使用
- 抽象用于不同的事物,而接口用于事物的行为
###### 设计模式的设计原则
- 开闭原则:对扩展开放,对修改封闭
+ mean: 实例的内部不可修改,但可以增加新功能
- 依赖倒转:对接口编程,依赖于抽象而不依赖于具体
+ mean: 就是把公共的拿出来,定义成抽象类、接口、抽象方法,然后大家再去实现这个抽
象,实现的方法各有不同,各个实体相互独立没有依赖,各个实体离开谁都能活
- 接口隔离:使用多个接口,而不是对一个接口编程,去依赖降低耦合
+ mean: 就是抽象再抽象
- 最少知道:减少内部依赖,尽可能的独立
+ mean: 实现依赖注入容器,把依赖的实体注入到一个实例(所谓容器)
- 合成复用:多个独立的实体合成聚合,而不是使用继承
+ mean:尽可能不用继承,使用以上三种方式构成代码结构
- 里氏代换:超类(父类)出现的地方,派生类(子类)都可以出现
+ mean:能用父类实现的子类也能实现
###### 简单设计原则
- 通过所有测试:及需求为上
- 尽可能的消除重复:高内聚低耦合
- 尽可能的清晰表达:可读性
- 更少代码元素:常量,变量,函数,类,包 …… 都属于代码元素,降低复杂性
- 以上四个原则的重要程度依次降低
> 核心:高内聚松耦合(单一职责),外部依赖,实体对抽象编程,抽象就是分层