设计模式
- 什么是设计模式
- 什么时候使用设计模式
- 设计模式六大原则
- 常见设计模式
什么是设计模式
设计模式是软件开发人员在软件开发过程中面临一般问题使用的解决方案。设计模式是在软件开发过程中反复积累经验的总结。一般在Java中使用居多,也可称为面向对象设计模式。
什么时候使用设计模式
笔者认为任何时候都需要先考虑设计模式,因为设计模式可以达到易扩展,易维护,可重用,易理解等优点。但并非所有场合都使用,比如为一个简单的场合或者演示场景设计一个复杂的设计模式将毫无意义。
学习中看到网友一句话觉得很好:学习,然后全部忘记。熟练理解了设计模式,不用刻意的去设计也会用出最适宜的设计模式。
实际上有网友对Java的设计语言有一定偏见,认为好的语言不会产生那么多设计问题,由此产生如此多设计模式,认为需要语言进行原生实现。
笔者认为编程语言没有好坏,学习设计模式未必不是件好事,当编程语言为你封装了设计模式,而你并不清楚,不是也很悲哀。
设计模式六大原则
开闭原则(Open Close Principle)
对扩展开放,修改关闭。实现热插拔
里氏替换(Liskov Substitution Principle)
里氏替换是面向对象设计原则之一。任何父类可以出现的地方,子类都可以出现
面向对象设计原则:单一职责,开放封闭,里氏替换,接口隔离,依赖倒置
依赖倒置(Dependence Inversion Principle)
是开闭原则的基础,依赖抽象而不依赖具体
接口隔离(Interface Segregation Principle)
使用多个隔离的接口,代替使用单个接口。降低类之间的依赖和耦合度
迪米特法则,又称最少知道原则(Demeter Principle)
一个实体尽量少于其他实体发生相互作用,达到模块之间相互独立
合成复用(Composite Reuse Principle)
尽量使用聚合/耦合,少用继承
常见设计模式
创建型模式:对象如何来
结构型模式:对象之间的关系
行为型模式:对象做什么
责任链模式(Chain of Responsibility Pattern):使多个对象都有机会处理请求,避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链
命令模式(Command Pattern):将一个请求封装成一个对象,使用户对不同请求对客户进行参数化,对请求排队或记录请求日志,请求撤销操作
解释器模式(Interpreter Pattern):给定一个语言,定义他的一个文法的一种表示,并定义一个解释器。
迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的元素,并且不暴露内部表示
中介者模式(Mediator Pattern):用一个中介对象封装一系列对象的交互
备忘录模式(Memento Pattern):在不破坏封装的情况下,捕获一个类的内部状态,并在外部保存。可以将对象恢复到原先的状态
观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个监听者对象同时监听同一个主题对象
状态模式(State Pattern):一个对象内在状态改变是允许改变其行为
策略模式(Strategy Pattern):策略模式是一种定义了一系列算法的方法,所有的算法都是完成相同的工作,只是实现方法不同,减少了各种算法类与使用方法之间的耦合
模板模式(Template Pattern):定义一个操作算法骨架,而将一些步骤延迟到子类。
访问者模式(Visitor Pattern):把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化