设计模式分为3种
创建型设计模式:单例模式(Singleton)、简单工厂模式(Static Factory)、工厂方法模式(Factory Methods)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)
行为型设计模式:模板方法模式(Template Method Pattern)、中介者模式(Mediator)、观察者模式(Observer)、访问者模式(Visitor)、命令模式(Command)、责任链模式(Chain of Responsibility)、策略模式(Strategy)、状态模式(State)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)
结构型设计模式:适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、代理模式(Proxy)、享元模式(Flyweight)
单一职责原则:一个类只负责一项职责
它有如下优点
- 可以降低类的复杂度
- 使逻辑变得更简单
- 提高了类的可读性和系统的可用性
里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能(不要破坏继承关系)
包含4层含义
- 子类可以实现父类抽象方法,但不能覆盖父类的非抽象方法
- 子类中可以增加自己特有的方法
- 当子类的方法重载父类的方法时,方法的前置条件(形参)要比父类方法的输入更宽松
- 当子类的方法实现父类的抽象方法时,方法的后置条件(返回值)要比父类更加严格
依赖倒置原则:面向接口编程
它要求我们做到:
- 低层模块尽量都要有抽象类或接口,或者两个都有
- 变量的声明类型尽量是抽象类或接口
- 使用继承时遵循里氏替换原则
接口隔离原则:设计接口要单一
要注意以下几点
- 接口尽量小,但是要有限度
- 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法隐藏起来
- 提高内聚,减少对外交互
- 运用接口隔离原则,一定要适度,接口设计过大或过小都不好
迪米特原则(最少知道原则):降低类与类的耦合
过分的使用迪米特原则,会产生大量的中介和传递类,导致系统复杂度变大,所以在采用迪米特原则是要反复权衡,既做到结构清晰,以要高内聚低耦合
开闭原则:对扩展开放,对修改关闭
用扩展拥抱变化,而不用修改适应变化