设计模式期末复习总结

发布时间 2023-12-21 17:06:17作者: 冰稀饭Aurora

七个软件 设计原则

 

 

装饰模式体现了单一职责

 

 

 

里氏代换:

子类能够替换父类

 

 

 

 

 

装饰模式体现了合成复用

 

每个软件单位对其它只有最少的知识,桥接模式为典型,还有外观模式

 

 

 

 

 

 

设计模式定义:

是一套被反复使用,多数人知晓,经过分类编目的代码设计经验的总结

设计模式的目的:

为了可复用代码

提供代码可靠性

让代码更容易被他人理解

二十三种设计模式

5种创建型模式 工厂方法(含 简单工厂) 抽象工厂 建造者模式 原型模式 单例模式

7种结构型模式 适配器 桥接 组合 装饰 外观 享元 代理 

11 种行为型模式

 

======创建型=======

简单工厂模式 :可以根据参数的不同返回不同类的实例,专门定义一个类来负责创建其它类的示例,被创建的类通常有共同的父类

当需要什么,只需要传入一个正确的参数,就可获取所需要的对象,而无需知道其细节

实例:简单电视工厂,权限管理

工厂方法模式:工厂父类负责创建公共接口,工厂子类负责生成具体产品对象,目的是 将产品类的实例化操作延迟到工厂子类种完成

实例:电视机工厂

抽象工厂模式:提供一个创建一系列相关或相互依赖的接口,无须指定具体的类

实例:电器工厂

建造者模式Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

无需关心对象具体组装过程,只需确定具体建造者的类型

实例:KFC套餐

原型模式Prototype用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。

实例:邮件复制

单例模式Singleton:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例

实例:身份证号码

======结构型=======

适配器模式Adapter:将一个接口转换成用户希望的另一个接口,使接口不兼容的类可以一起工作

实例:仿生机器人

桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化

实例:模拟毛笔

组合模式Composite:组合多个对象形成树形结构,以表示“部分-整体”的结构层次,对单个对象和组合对象的使用有一致性

实例:水果盘

装饰模式Decorator:动态的给一个对象增加一下额外的职责

实例:变形金刚

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

实例:电源总开关

享元模式Flyweight:运用共享技术有效的支持大量细粒度对象的复用

实例:共享网络设备

代理模式Proxy:给一个对象提供一个代理,并由代理对象控制对原对象的引用

实例:论坛权限控制代理

=======行为型==========

职责链模式Handler:避免请求发送者与接收者耦合,让多个对象都有可能接到请求,将请求对象连城一条链,并且沿着这条链传递请求

实例:审批假条

命令模式Command:将一个请求封装成一个对象,使得不同的请求可以对客户进行参数化,对请求排队或记录日志,支持可撤销的操作

实例:电视遥控器

中介者模式Mediator:用一个中介对象封装一系列的对象交互,使其耦合松散

实例:虚拟聊天室

备忘录模式Memento:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,可以将对象恢复到原来的状态

实例:用户信息操作撤销

观察者模式Observer:定义对象间的一种一对多依赖关系,使得一个对象发生变化时,相关依赖皆得到通知并被自动更新

实例:猫狗与老鼠

状态模式State允许一个对象在其内部状态改变之时改变它的行为,对象看起来似乎修改了他们的类

实例:论坛用户等级

策略模式Strategy定义一系列算法,将每一个算法封装起来,并让他们可以相互替换

实例:排序策略

迭代器模式Iterator:提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示

实例:电视遥控器 对频道进行遍历

模板方法模式Template:定义一个操作种的算法的框架,而将一些步骤延迟到子类中,可以不改变一个算法的结构即可重定义带算法的某个特定步骤。

实例:银行业务办理流程

 

优点:

符合开闭原则,符合单一职责原则

降低了系统的耦合度

减少子类个数

节约资源,提高系统性能

提高了系统的可扩展性,可复用性

隐藏了不必要的具体细节

缺点:

一定程度上违反了开闭原则

系统耦合度高

增加类的个数,产生更多对象

提升了系统的复杂度

提升了系统的理解与设计难度,提升了系统的抽象性