面向可复用性和可维护性的设计模式

作者:syt

设计模式

为什么要使用可复用的设计模式?

好的设计应该——可复用性、可维护性、可扩展性。
设计模式——设计模式是在软件设计的特定语境下,针对常见问题的通用、可复用解决方案。
除了类本身,设计模式更强调多个类/对象之间的交互过程,复用的粒度更大。

设计模式分类

创建型模式:涉及对象创建的过程。
结构型模式:处理类或对象之间的组合。
行为型模式:刻画类或对象交互及分配职责的方式。

创造型模式

对象该怎么创建才能更灵活,更容易扩展。
单例模式——保证一个类只有一个实例。
工厂方法模式——把“创建哪个对象”这件事交给工厂,而不是业务代码写死。
抽象工厂模式——创建一组有关联的对象,而不是只创建一个对象。
建造者模式——把复杂对象的构造过程拆开,一步一步构建。
原型模式——通过复制已有对象来创建新对象,而不是重新创建。

结构型模式

什么是结构型模型

关注类和对象如何组合,才能形成更灵活、更可维护的结构。

适配器模式

将某个类/接口转换为client期望的其他形式——通过增加一个接口,将已存在的子类封装起来,client面对接口编程,从而隐藏具体子类。

桥接模式

将抽象部分与实现部分分离,使它们可以独立变化。

组合模式

将对象组合成树形结构,以表示“部分-整体”的层次关系。
客户端可以一致地对待单个对象和组合对象。

装饰器模式

在不改变原对象的前提下,动态地为对象添加额外功能。

外观模式

为复杂子系统提供一个统一的高层接口,使其更容易使用。

享元模式

通过共享技术有效支持大量细粒度对象。

代理模式

为其他对象提供一种代理,以控制对这个对象的访问。

行为模式

什么是行为模式

如何降低对象间耦合;切换逻辑实现方式;通知其他对象状态变化;规范流程步骤。

策略模式

有多种不同算法来实现同一个任务,但需要client根据需要动态切换算法,而不是写死在代码里。
为不同的实现算法构造抽象接口,利用delegation,运行时动态传入client倾向的算法类实例。

观察者模式

当一个对象状态发生变化时,通知所有依赖它的对象。

模板模式

做事情的步骤一样,但具体方法不同。
共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。

命令模式

将请求封装为对象,从而支持参数化、排队、撤销等操作。

状态模式

允许对象在内部状态改变时改变其行为。

责任链模式

迭代器模式

提供一种方法顺序访问聚合对象中的元素,而不暴漏其内部结构。

中介者模式

通过一个中介对象封装一组对象之间的交互。

备忘录模式

在不破坏封装的前提下,保存对象的内部状态,并可恢复。

访问者模式

在不改变对象结构的前提下,定义新的操作。

设计模式的共性与差异

← 返回博客目录