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

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

卡卷网12个月前 (01-07)每日看点167

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

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

分享给朋友:

相关文章

4000以下的手机有没有推荐的啊?

4000以下的手机有没有推荐的啊?

可以选择标准版的旗舰机型:vivo X100s、一加12、OPPO Find X7、小米14、iQOO 12;也可以选外观时尚的自拍影像机型:vivo S19 Pro、realme GT 5 Pro、荣耀 200Pro、小米 Civi 4...

马云也搞不明白:为什么现在用户偏爱微信支付,而不是支付宝?

这题我会,我教马云一招。你直接把你那破比支付宝的代码全删了,重新写一个。打开支付宝直接就是一个大大的支付码,然后右上角按一下就是扫一扫。你要是还想保留你的其他那些乱七八糟的功能,麻烦将他们全部做到下拉菜单里。你这么设计我不说你能干死微信,但...

夸克浏览器受欢迎的原因是什么?

夸克浏览器受欢迎的原因是什么?

这是可以说的嘛~哈哈,它比较吸引我的几点是:安全无广、页面简洁、功能丰富、反应速度快......首页页面支持自定义,喜欢什么样子都可以自己调整,没有花里胡哨的各种资讯推送,热搜日报整理归纳好,想看再点开查看,看着舒适度直接拉满!实用日常工具...

有哪些是你用上了mac才知道的事?

用上了高端的Mac(已退货)才知道:原来文件夹里面的文件,你看到是8个,其实可能有12个。其中3个图标重叠在一起了,另外一个被拖动到屏幕外面了。用上了高端的Mac(已退货)才知道:原来鼠标灵敏度有问题是因为系统内置了鼠标加速度,只能用控制台...

如何判断 Java 工程师的基础知识是否扎实?

我来给你出几道大题,能答对70%,你就算基础扎实了。第一部分 Java基础(27)1. 程序本质:代码是如何被执行的?CPU、操作系统、虚拟机各司何职?2. 基础语法:从CPU角度看变量、数组、类型、运算、跳转、函数等语法3. 引用类型:同...

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

抖音小店三个月了一单没出,也没有流量,一个星期好像都没有一个点击,怎么办?

好消息,你有毅力上200多个品,还能坚持三个月坏消息,一单没出我感觉你还是别碰抖店了,甚至电商平台都别碰 你没这个缘分我要是这样,我得用一百辆叉车叉死我自己你如果还想坚持,我直接给你这套至少价值19800学来的新思路简单来说就是 你做的好的...

发表评论

访客

看不清,换一张

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