常见的设计模式解析

160 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

虽然设计模式很多,但在软考往年的习题中所遇到的设计模式也就那么几种。为了巩固复习,我们来学习一下相关设计模式的内容吧。

创建型模式

创建型模式(Creational Pattern),对类的实例化过程进行了抽象,将对象的创建和使用分离。单一职责原则;降低系统耦合度,使用者不需要关注对象创建细节,由相关工厂来完成;

单例模式(Singleton):保证类只有一个实例,并提供一个访问它的全局访问点

  • 举例:浏览器中只有一个唯一的主窗口,其他标签页是从主窗口中开启的.
  • 关键字:一个实例

v2-a475c8696f59bb06a428785ac539a272_b.gif

原型模式(Prototype):用于创建重复的对象,同时保证性能。又称拷贝对象模式,省略了构造过程。

  • 关键字:创建重复对象 v2-e508dbecc57c71c369bae2f385182491_b.gif

结构型模式

结构型模式(Structural Pattern),关注如何将现有类或对象组织在一起,形成更加强大的结构; 

可分为两种:类结构模式和对象结构模式;前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象;组合聚合关系比继承关系耦合度低,满足合成复用原则,所以对象结构型模式具有更大的灵活性。 

适配器模式(Adapter)将一个类的借口转换成用户希望得到的另一种借口。它使原本不相容的借口得以协同工作。

  • 关键字:接口转换
  • 类似于电源适配器等作用,用以适配接口。

类适配器模式: 

对象适配器模式 

桥接模式(Bridge):将抽象与实现分离,使它们可以独立变化。

  • 将类的不同属性,按照属性维度拆分到不同的类中,每个类负责一个属性的变化
  • 关键字:继承树拆分 v2-6dc3b0ba7e517edce62637901ad32214_b.gif

装饰模式(Decorator):在不改变现有对象结构的情况下,动态地给对象增加一些额外功能(职责);

  • 关键字:附加职责 image.png

行为型模式

行为型模式,用于描述程序在运行时复杂的流程控制;

描述多个类或对象之间,如何相互协作共同完成单个对象无法完成的任务;涉及算法与对象间职责的分配;

行为型模式可分为:类行为模式和对象行为模式,前者采用继承机制来实现类间分派行为,后者采用组合或聚合在对象间分配行为。

观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象,在状态发生变化时,会通知所有观察者。

  • 一个状态改变通知所有观察者

v2-c37ffc881963363837dadfff710b998f_b.gif

状态模式(State):允许一个对象在其内部状态改变时改变它的行为。

  • 状态变成类

v2-9b1dd329d342ba4dd429602b9216a2ac_b.gif

策略模式(Strategy):定义一系列算法将其封装,使其之间可以相互替换,算法独立于使用它的用户而变换。

  • 多方案切换

v2-cfd20802e8a2c3c3e536c0ea60961798_b.gif

图片来源于部分知识点参考