当前位置:首页 > 每日看点 > 正文内容

软件设计中有哪些常见的设计模式?

卡卷网1年前 (2025-01-07)每日看点184

参考《<>设计模式:可复用面向对象软件的基础》,序号和书籍上的序号对应。

3.对象创建型模式

<>3.1AstractFactory(抽象工厂)——对象创建型模式

意图:提供一个接口以创建一系列相关或相互依赖的对象,而无须指定它们具体的类。

<>3.2uilder(生成器)——对象创建型模式

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

<>3.3FactoryMethod(工厂方法)——对象创建型模式

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

<>3.4Prototype(原型)——对象创建型模式

意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

<>3.5Singleton(单件)——对象创建型模式

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

<>4.对象结构型模式

<>4.1Adapter(适配器)——类对象结构型模式

意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

<>4.2ridge(桥接)——对象结构型模式

意图:将抽象部分与它的实现部分分离,使它们可以地变化。

<>4.3Composite(组合)——对象结构型模式

意图:将对象组合成树形结构以表示“部分–整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

<>4.4Decorator(装饰)——对象结构型模式

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相生成子类更为灵活。

<>4.5Facade(外观)——对象结构型模式

意图:为子中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子更加容易使用。

<>4.6Flyweight(享元)——对象结构型模式

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

<>4.7Proxy()——对象结构型模式

意图:为对象提供一种以控制对这个对象的访问。

5.对象行为型模式

<>5.1ChainofResponsiility(职责链)——对象行为型模式

意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

<>5.2Command(命令)——对象行为型模式

意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求志,以及支持可撤销的作。

<>5.3Interpreter(解释器)——类行为型模式

意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

<>5.4Iterator(迭代器)——对象行为型模式

意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

<>5.5Mediator(中介者)——对象行为型模式

意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以地改变它们之间的交互。

<>5.6Memento(备忘录)——对象行为型模式

意图:在不封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

<>5.7Oserver(观察者)——对象行为型模式

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

<>5.8State(状态)——对象行为型模式

意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

<>5.9Strategy(策略)——对象行为型模式

意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互换。本模式使得算法可于使用它的客户而变化。

<>5.10TemplateMethod(模板方法)——类行为型模式

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

<>5.11Visitor(访问者)——对象行为型模式

意图:表示一个作用于某对象结构中的各元素的作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新作。


面向对象设计原则

<>1.单一职责原则(SingleResponsiilityPrinciple,SRP)

含义:一个类或方法只负责一个功能点,即一个类应该仅有一个引起它变化的原因。

作用:减少类之间的耦合,提高类的复用性。如果一个类承担多个职责,当其中一个职责发生变化时,可能会影响职责,导致脆弱的设计。

<>2.开闭原则(Open-ClosePrinciple.OCP)

含义:对扩展开放,对修改封闭。即软件实体(类、模块、函数等)应可以扩展但不可修改。

实现方式:通过抽象化来实现,即对抽象编程而不对具体编程。让类依赖于固定的抽象,因此对修改是封闭的:而通过面向对象的继承和多态机制,可以实现对抽象类的继承,通过覆写其方法来改变固有行为,实现新的拓展方法,因此是开放的。

<>3.里氏替换原则(LiskovSustitutionPrinciple,LSP)

含义:子类必须能够替换它们的父类且不影响程序的正确性。简单来说,子类可以扩展父类的功能,但不能改变父类的原有功能。

作用:保证继承复用的可性,减少代码兄余,避免运行期的类型判别。

<>4.依赖倒置原则(DependenceinversionPrinciple,DlP)

表述:抽象不应该依赖于细节,细节应该依赖于抽象。即针对接口编程,而不是针对实现编程。

作用:降低类间的耦合性,提高代码的可读性和可性。通过依赖抽象接口,而不是具体实现类,使得具体类可以被别的具体类替换,而不影响客户端。

<>5.接口隔离原则(InteceSegregationPrinciple,lSP)

含义:客户端不应该被强迫依赖它们不使用的方法:一个类对另外一个类的依赖应该建立在最小的接口上。

实现方式:使用多个专门的接口使用单一的总接口要好。这有助于降低类之间的耦合度,提高的灵活性和可性。

<>6.合成/聚合复用原则(Composite/AggregateReusePrinciple,CARP)

含义:尽量使用合成/聚合的方式,而不是使用继承来达到复用的目的。

作用:保持类的封装性,使类和类继承层次保持较小规模,并降低复杂度。合成和聚合是关联的特殊种类,其中聚合表示一种弱的拥有关系,而合成表示一种强的拥有关系。

<>7.迪米特法则(LawofDemeter,LOD)

含义:一个对象应该对对象保持最少的了解,只与直接朋友通信。

作用:降低类之间的耦合度,提高的可性和可扩展性。通过减少类之间的依赖关系,可以降低因某个类的变化而引发的连锁反应。


附:绘图符号说明(UML/OMT)

<>UML

+、-表示属性是公开的还是私有的(pulic或private),还有#表示保护(protect)

关联关系中:0..*(零或多)、1..*(一或多)、*(多)、1、4

<>OMT

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/6977.html

分享给朋友:

相关文章

电脑c盘哪些文件可以删除?

电脑c盘哪些文件可以删除?

电脑上的文件夹都是英文,很多朋友都不敢乱删,下面这几个文件夹里的文件,你可以放心删除。一、可删除的文件1、Backup这是一个备份文件夹,很多装机软件经常会把需要备份的东西,放在这个文件夹中。而当我们需要的软件正常保存之后,这些东西也就没有...

怎么用游戏搬砖挣钱呢?

怎么用游戏搬砖挣钱呢?

今天,我把我多年操作的经验分享出来,以供各位老板们学习借鉴,胆小的老板就离开吧,心里承受能力太弱了,会刷新你的认知的。有些新人在计算收益的时候,会以机器数来计算,其实是有误区的,比如,一台机器一个月搞400元,平均每天搞13元钱,搞上100...

b站真的能自学PS吗?

b站真的能自学PS吗?

看你想达到哪一种程度了,如果你只是平常用PS扣图、调整照片大小、尺寸、简单调个色这样,自学真的挺简单的,B站很多免费的教程都可以教会你这些技巧。但是如果说你想成为专业的设计师或者是商业修图师,无师自通真的非常难,首先你会走很多弯路,不知道怎...

自媒体如何快速起步?

自媒体如何快速起步?

有两种经验,可供参考。第一种是:现象级的爆火、爆款,这种情况捞到钱,实现财务自由的人并不多,但确实存在。只不过非要说清楚为什么这个账号可以火、可以短时间内赚到普通人一辈子赚不到的钱,他们自己也不一定能说清楚,因为赶上了风口(内外部情况)。举...

下一个风口最可能是什么?

下一个风口最可能是什么?

肯定是一带一路了,国内没什么卷的空间了,现在国家正在给一带一路的第三世界国家建设基础设施,等交通打通之后,就是通信打通,通信打通就是贸易打通,未来我建议大家重仓小语种,阿拉伯语最值得学(也有其他小语种自己去查一带一路国家),将来去其他国家随...

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1.稻盛和夫说过:“改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。2.早睡早起,坚持运动保持旺盛的精力,人生拼到最...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。