当前所在位置: 首页 > 生活常识 > 正文

常用的设计模式有哪些(23种设计模式总结)

2023-01-14 canyinms.com 【 字体:

常用的设计模式有哪些,23种设计模式总结。小编来告诉你更多相关信息。

什么是设计模式

设计模式(Design Patterns):是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案

设计模式概念首次出现在编程领域是在1994年,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人(简称GoF)合著出版了一本名为设计模式: 可复用面向对象软件的基础的书,该书中讲述了使用23种设计模式解决了面向对象的各种问题。

为什么学习设计模式

提高自身思维能力及程序设计能力。

使程序标准化,团队间可以进行更有效的沟通(前提是他也知道设计模式),开发效率提升。

设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强

设计模式分类

常用的设计模式有哪些(23种设计模式总结)

创建型模式

提供创建对象的机制, 增加已有代码的灵活性和可复用性。

单例:Singleton

某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

工厂方法:Factory Method

定义一个用于创建产品的接口,由子类决定生产什么产品。

抽象工厂:Abstract Factory

提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

建造者:Builder

将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

原型:Prototype

将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。

结构型模式

介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

设配器:Adapter

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

桥接:Bridge

将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

组合:Composite

将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

装饰:Decorator

动态地给对象增加一些职责,即增加其额外的功能。

外观:Facade

为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。

享元:Flyweight

运用共享技术来有效地支持大量细粒度对象的复用。

代理:Proxy

为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。

行为型模式

负责对象间的高效沟通和职责委派。

责任链:Chain of Responsibility

把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。

命令:Command

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

迭代器:Iterator

提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

中介者:Mediator

定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。

观察者:Observer

多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。

状态:State

允许一个对象在其内部状态发生改变时改变其行为能力。

策略:Strategy

定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

模板方法:Template Method

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

访问者:Visitor

在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。

备忘录:Memento

在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。

解释器:Interpreter

提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。

设计模式的目的(指导思想)

实现程序代码的高内聚、低耦合。

可维护性:Maintainability

修改功能,需要改动的地方越少,可维护性就越好。

可复用性:Reusability

相同的代码可被复用,总结出自己的类库,不用多次编写。

可扩展性:Extensibility/Scalability

添加功能无需改动已有代码(改动少量代码实现新功能)。

灵活性:flexibility / mobility / adaptability

代码接口可以灵活调用。

设计模式六大原则

单一职责原则(Single Responsibility Principle)

一个类应该只负责一项职责。

降低类的复杂度,提高类的可读性及可维护性,实现高内聚低耦合。

开闭原则(Open Close Principle)

对扩展开放,对修改关闭。

尽量不修改原来代码的情况下进行扩展,抽象及多态是开闭原则的关键。

里氏代换原则(Liskov Substitution Principle)

所有使用父类的地方,必须能够透明地使用子类对象,子类可以扩展父类的功能,但不能改变父类原有的功能。

依赖倒置原则(Dependence Inversion Principle)

依赖抽象,而不是依赖具体实现,面向抽象编程。

接口隔离原则(Interface Segregation Principle)

每一个接口应该承担独立的角色,不干不该自己干的事儿。

避免子类实现不需要实现的方法。

需要对客户提供接口的时候,只需要暴露最小的接口。

迪米特法则( Law of Demeter)

尽量不要和陌生人说话

在迪米特法则中,对于一个对象,非陌生人包括以下几类:当前对象本身(this)。以参数形式传入到当前对象方法中的对象。当前对象的成员对象。如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友。当前对象所创建的对象。

和其他类的耦合度变低。

总结

OCP: 总纲,对扩展开放,对修改关闭

SRP: 类的职责要单一

LSP: 子类可以透明替换父类

DIP: 面向接口编程

ISP: 接口的职责要单一

? LoD: 降低耦合

阅读全文
相关推荐

如何自制蛋挞

如何自制蛋挞
1、倒入低筋面、黄油和水,揉成面团状,藏一小时后取出,抹上黄油卷起,包上保鲜膜冷藏半小时。2、取出,将面团切成一厘米的面团,放入模具内,用力按压,中间稍薄,外缘要比模具高,将蛋挞液倒入蛋挞皮中,放入烤箱里烤30分钟即可。

肉火烧面怎么和面

肉火烧面怎么和面
1、首先用温水把酵母融开,加入面粉,用手把面粉揉成非常软的面团,可以放一点熬好的猪油在面团里面。2、然后放在温暖的地方,盖上保鲜膜发酵至2倍大,发好的面团用手插入不回缩,就说明面团发酵好了。

奶茶几分糖好喝

奶茶几分糖好喝
1、不同的人对奶茶的口感要求是不一样的,一般来说,奶茶有三分糖、五分糖、七分糖三种不同的口味。2、女生一般都喜欢喝甜一点的,而男生则喜欢喝不那么甜的,七分糖的奶茶最好喝。

过桥米线是哪里的?

过桥米线是哪里的?
过桥米线是来自云南省滇南地区的一种有名特色小吃。过桥米线最早是在清朝就已经出现,距离现在至少有一百多年的历史啦!起源于建水县东城外锁龙桥西侧的鸡市街头处,有建水的特产草芽、地椒作配料,风味独特而远近闻名。深受广大美食爱好者的喜欢,不少人为此专门长途跋涉,只为尝

面霜和乳液的区别

面霜和乳液的区别
面霜和乳液的区别,相较而言乳液的水分含量要比面霜高,乳液质地要轻薄一些,乳液主要作用是保湿,滋润可以隔离外界干燥的气候,面霜既可保湿,又可美白,还能抗衰老,乳液的吸收快一些,而面霜吸收比较慢一些,因为液体的吸收速度都比较快。

怎么摘隐形眼镜

怎么摘隐形眼镜
在摘隐形眼镜之前,先用洗手液将手清洗干净,以免将细菌带入眼睛内,对着镜子,用右手中指轻拉眼睛下眼睑,左手中指轻拉眼睛上眼睑,让黑色眼球暴露在空气中,用右手食指和拇指轻触镜片的两边缘部分,向中间推使镜片拱起,再用两手指轻轻捏出镜片即可。

粉饼和散粉的区别

粉饼和散粉的区别
粉饼是呈压缩固体状态,多呈圆形或者方形,散粉则是细腻的粉末状,粉饼遮瑕力会比较强一些,可以湿用做粉底,或者用来补妆,而散粉则是定妆的效果,粉饼通常用在底妆的第一步,而散粉通常用在底妆最后一步。

冷烫和热烫的区别

冷烫和热烫的区别
冷烫和热烫的区别:冷烫对头发的要求是要在保温状态下才能给卷有个好的效果,而热烫是在干和湿的情况下都行,热烫烫出来的头发比较自然明显而有弹力,冷烫的头发风干后基本看不出来,并且发质会有点干。

高品质香水如何鉴别?用三步就可以解决

高品质香水如何鉴别?用三步就可以解决
1、看色泽以天然香料调制而成的高级香水,都有它本来的颜色,且大都是琥珀色或褐色,看起来很像宝石,比如,从茉莉、玫瑰或水仙等天然鲜花中所萃取的精油都呈黄色、褐白或绿褐色;此外,香水中所添加的魅惑香气物性香料也是褐色,苔类中的橡树苔是绿色,从树根或树根脂类中萃取的

如何去除黑眼圈

如何去除黑眼圈
去除黑眼圈首先可以用热毛巾敷眼,然后再用冷毛巾敷,十分钟就能让黑眼圈淡化的不那么严重,其次将去壳后的鸡蛋用无菌纱布包裹住,敷于眼部轻轻转动,可以急救去除黑眼圈,另外抹完眼霜后,用双手顺时针按摩,可以促进血液循环消除黑眼圈。
本文Tag