设计模式是什么(Design pattern)
- 一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
- 设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。
- 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
- 这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式的好处
- 解耦
- 提高扩展性
- 减少重复代码
- 易读易维护
设计模式分类
设计模式分为三种类型,共23种
- 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
- 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
- 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
设计模式六大原则
总原则:开闭原则(Open Close Principle)
对扩展开放,对修改关闭。程序的扩展性好,易于维护和升级
1. 单一职责原则 (Single Responsiblity Principle SRP)
一类实现一个功能
2. 里氏替换原则(Liskov Substitution Principle,LSP)
子类对象能够替换父类对象,而程序逻辑不变(也就是参数定义和结果不变)
List.get(int index) -> MyList.get(int index),index都是从0开始,结果都是返回index位置的值,内部各自实现
3. 依赖倒转原则(Dependency Inversion Principle,DIP)
面向接口编程
List list = new ArrayList();, List list = new LinkedList();
4. 接口隔离原则(Interface Segregation Principle,ISP)
接口定义的方法尽量少,抽象程度尽量高,可层层抽象
如动物可以呼吸、走路,而植物可以呼吸,不能走路,那么,可以把呼吸抽象成一个接口,而人的呼吸、走路则是呼吸接口的子接口,就以上文字而言,植物就是直接继承呼吸接口
5. 合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
能使用合成和聚合的,就尽量不要使用继承
如一个对象有求和的功能,这时新的对象需要求和功能时,直接通过对象.方法进行引用,而不是通过继承得到功能
6. 最少知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则)
使用一个对象的功能时,只需要知道它需要的参数和返回值就可以了,不需要知道内部实现