软件设计模式

一. 设计模式的模式原则

开-闭原则:模块应对拓展开放而对修改关闭。

里氏代换原则:如果调用的是父类,那么换用子类也完全可以调用。

合成复用原则:少用继承多用合成关系来实现。

依赖倒转原则:针对接口编程而不是针对实现编程。

接口隔离原则:一种角色不多不少的干事,不依赖不使用的方法。

单一职责原则:一个类而言,应该仅有一个引起变化的原因,否则类应该被拆分。

迪米特法则:一个软件实体应该尽可能的少与其他实体发生相互作用,初衷在于降低类之间的耦合。

二. 创建模式

简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为。

工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。

抽象工厂模式:定义了一个接口用于创建相关或有依赖关系的对象族,无需指定具体类。

单例模式:确保一个类最多只有一个实例,并提供一个全局访问点。

生成器模式:封装一个复杂对象构造过程,并允许按步骤构造。

原型模式:通过复现现有实例来创建新的实例,无需知道相应类的信息。

三. 结构模式

适配器模式(类、对象、接口):将某个类的接口转换成客户期望的另一个接口表示,目的是消除接口不匹配所造成的类的兼容性问题。

装饰者模式:动态将新功能附加到对象上。

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

外观模式:隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。

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

组合模式:有时又叫部分-整体模式,将对象组合成树状的层次结构模式,用来表示"部分-整体"关系,是用户对单个对象和组合对象有一致访问性。

享元模式:通过共享的方式高效的支持大量细粒度的对象。

四. 关系模式

策略模式:定义一系列算法,并将每个算法封装起来,使他们可以互相交替而不影响到使用算法的客户。

模版模式:定义一个操作中算法的骨架,将一些步骤延迟到子类中,模版方法使子类可以不改变算法的结构即可重定义该算法的某些特定步骤。

观察者模式:定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素而无需暴露该对象的内部表示。

责任链模式:多个对象处理请求,使发送者和接受者解耦,请求沿着责任链传递,知道有一个对象处理了它为止。

命令模式:将请求封装为对象,使发出请求的责任和执行请求的责任分割开。

状态模式:创建各种表示状态的对象和一个行为对象随状态对象改变而改变的context对象。

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后需要时能将该对象恢复到先前保存的状态。

访问者模式:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。

中介者模式:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,可以独立地改变他们之间的交互。

相关推荐
牛奶咖啡1318 分钟前
学习设计模式《二十三》——桥接模式
学习·设计模式·桥接模式·认识桥接模式·桥接模式的优点·何时选用桥接模式·桥接模式的使用示例
左灯右行的爱情32 分钟前
深度学习设计模式:责任链(Chain of Responsibility)模式(例子+业务场景+八股)
深度学习·设计模式·责任链模式
stringwu34 分钟前
Flutter 开发者必备:WebSocket 实用指南
flutter
小林的技术分享43 分钟前
关于排查 Flutter 3.27.0 版本Android端无法禁用Impeller引擎的过程记录
前端·flutter
是2的10次方啊1 小时前
🚀 Spring设计模式大揭秘:23种模式藏在你每天在用的框架里
设计模式
东北南西1 小时前
设计模式-单例模式
前端·javascript·单例模式·设计模式
新子y2 小时前
【操作记录】我的 MNN Android LLM 编译学习笔记记录(一)
android·学习·mnn
快乐非自愿2 小时前
掌握设计模式--命令模式
设计模式·命令模式
lincats4 小时前
一步一步学习使用FireMonkey动画(1) 使用动画组件为窗体添加动态效果
android·ide·delphi·livebindings·delphi 12.3·firemonkey
想想吴5 小时前
Android.bp 基础
android·安卓·android.bp