设计模式简述

1.根据目的分类:

创建型模式(创建对象)、结构性模式(处理类和对象的组合)、行为型模式(描述类和对象如何交互和怎么分配职责)。

2.根据目的分类:

类模式(处理类和子类之间的关系)、对象模式(处理对象之间的关系)

image

面向对象概述

优点:可维护,可复用可拓展,灵活性高
特性:封装,多态,继承

衡量软件质量的属性:

可维护性:指软件能够被理解、改正、适应及扩展的难易程度
可复用性:指软件能够被重复使用的难易程度

面向对象设计原则:

1.开闭原则(总原则):软件实体应当对拓展开放,对修改关闭。
2.单一职责原则:一个对象应该只负责单一的一个职责,并且该职责被完整地封装在该对象中。
3.里氏代换原则:任何父类出现的地方都可以被子类替换。
4.依赖倒转原则(面向接口编程):要依赖于抽象,不依赖于具体的细节。抽象不应该依赖于细节,细节应该依赖于抽象。
5.接口隔离原则:客户端不应该依赖于它不需要的接口。
6.合成复用原则:优先使用对象组合,而不是继承来达到复用的目的。
7.迪米特原则(最少知识原则):一个对象应当对其它对象尽可能少了解,不和陌生人说话。

- 创建型模式

1.将对象的创建过程和使用过程进行分离
2.创建型模式更加关注对象的创建过程
3.创建型模式,更加符合单一职责,外界只需要知道他们的共同接口即可

1.简单工厂模式(静态工厂方法模式)

根据不同的参数获取不同类的实例,这些不同的类通常都有相同的父类。

image
根据不同的参数选择AB两条路最终生成Product

2.工厂方法模式(虚拟构造器)

工厂父类负责定义创建产品对象的公共接口,类的实例化操作延迟到子类。

image
可以通过继承一个父类类创建不同的对象

3.抽象工厂模式

提供一个创建一系列相关或者依赖对象的接口,而无需指定它具体的类。

image
创建一系列相关或相互依赖对象的接口

4.建造者模式

将一个复杂对象的构建,与它的表示分离,使得同样的构建过程创建不同的表示。建造者模式就是一步一步构建一个复杂的对象,它允许用户只通过指定的类型和内容就可以构建他们,用户不需要知道内部的具体构建细节

image
将复杂对象的创建过程拆分成多个简单对象

5.原型模式

用原型实例指定创建对象的种类,通过复制得到对应的对象

image
新对象有独立的内存空间

6.单例模式

确保一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。

image
系统只需要这一个实例

- 结构型模式

将不同的类和对象组合在一起

7.适配器模式

将一个接口装换成客户希望的另一个接口使得接口不兼容的类可以一起工作。

类适配器
image
对象适配器
image
通过引入一个适配器来实现重用现有功能代码

8.桥接模式

将抽象部分与他的实现部分分离,使他们有独立的继承体系

image
将类之间静态继承关系转换为动态的对象组合关系

9.组合模式

组合多个对象形成树形结构以表示“部分-整体”的结构层次。
组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有统一性

image
客户端可以一致使用一个组合结构或者其中单个对象

10.装饰器模式

动态地给对象增加一些额外的职责,就增加对象来说,装饰器模式比生成子类实现更为灵活

image
对客户以透明的方式,给一个对象附加更多的责任
可以在不需要创建新的子类的情况下,让对象的功能扩展

11.外观模式

外部与子系统通信通过一个统一的外观对象进行,为子系统中的一组接口提供一个统一的入口

image
为复杂的系统提供统一的入口

12.代理模式

给某个对象提供一个代理,并由代理对象控制原对象的引用

image
引入一个新的对象来实现对真实对象的操作,或者将新的对象作为真实对象的一个替身,引入一个代理对象来访问一个对象

- 行为型模式

行为型模式定义了系统中对象之间的交互与通信,研究系统在运行时的相互通信与写作,
进一步明确对象的职责,包括对对象复杂的流程的控制

13.命令模式

将一个请求封装为一个对象,从而使我们对不同的请求对客户进行参数化;
对请求排队或者记录请求日志,以及支持可撤销的操作

image
对请求进行封装

14.迭代器模式(游标模式)

提供一种方法来访问聚合对象,而不用暴露这个聚合对象的内部表示

image
迭代器用于对一个聚合对象进行遍历,将遍历操作从聚合对象中分离出来

15.观察者模式

定义对象之间的一种一对多的依赖关系,使得每当一个对象的状态发生改变时,
其相关依赖的对象皆得到通知并且被自动更新

image
具体的观察者类中需要使用到具体的目标类中的状态

16.状态模式

允许一个对象在其内部状态改变时改变其行为,在外界看来似乎是改变了它的类

image
将一个对象的状态从对象中分离出来,封装到专门的状态类中

17.策略模式

定义一系列算法,将每一个算法封装到策略类中,并且让他们可以相互替换

image
算法可以独立于使用它的客户而变化

posted @ 2025-12-19 11:32  acccccccccc  阅读(8)  评论(0)    收藏  举报