设计模式是什么?设计经验的总结!

 2024-01-10 00:01:35  阅读 0

c s架构程序缺点_架构问题_架构解决什么问题

设计模式( )是一组被反复使用、为大多数人所知并总结出来的分类代码设计经验。 使用设计模式的目的:为了代码的可重用性,让代码更容易被别人理解,保证代码的可靠性。 设计模式让代码编写真正工程化; 设计模式是软件工程的基石,就像建筑物的结构一样。

c s架构程序缺点_架构问题_架构解决什么问题

简单工厂模式

工厂模式有非常形象的描述。 创建对象类就像一个工厂,需要创建的对象就是产品; 产品在工厂加工,使用产品的人无需关心产品是如何生产的。 从软件开发的角度来看,这有效地降低了模块之间的耦合度。

简单工厂

对于相同的数据,不同的操作使用相同的接口

工厂方法

对于相同的数据,不同的操作使用不同的接口

抽象工厂

对于不同的数据,不同的操作使用不同的接口

策略模式

依靠C++的多态性,抽象类的指针可以访问所有子类对象(纯虚函数),一个指针可以访问所有策略的实现类

单例模式

单例模式保证某个类只有一个实例,它实例化自己并将这个实例提供给整个系统。 单例模式(一个程序不能打开两次,如:迅雷使用的2个单例模式不能同时打开)

访客模式

架构问题_架构解决什么问题_c s架构程序缺点

更多C/C++学习资料请私信我“代码”获取。

适用于数据结构相对不确定的系统。 它解耦了数据结构和作用于该结构的操作之间的耦合,允许操作集相对自由地演化。 访问者模式可以通过添加新的访问者类来轻松添加新操作。 访问者模式将相关行为集中到一个访问者对象中(做任何改变不需要修改基类,也不依赖虚函数)

观察者模式

定义了一对多的依赖关系,允许多个观察者对象同时监视某个主题对象。 当这个主题对象改变状态时,它会通知所有观察者对象,允许它们自动更新自己。 (QT的信号机制和消息机制都应用了观察者模式,还有订阅邮件,邮件到达就会给你发邮件)

建造者模式

这使得产品的内部外观能够独立改变,客户不需要了解产品内部构成的细节。 可以强制执行分步施工过程。 使用一个界面来完成不同的操作需要了解客户的需求。 (例如:登录QQ自动选择您所在的服务器)

口译员模式

给定一种语言,解释器模式定义其语法的表示并提供解释器。 客户可以使用该翻译器来解释该语言的句子。 (例如:360读取Lua脚本,这个细节的实现就是解释器模式)

命令模式

将发出命令和执行命令的职责分离,并委托给不同的对象,可以使请求方独立于发送方,这样请求方不必知道接收请求方的接口,更不用知道如何请求已处理。 已收到,以及操作是否、何时以及如何执行。 (命令模式多用于客户端和服务器之间(C/S架构))

模板模式

不同的子类可以用不同的方式实现这些抽象方法,

这会导致其余逻辑的不同实现。 首先制定一个顶层逻辑框架,

详细的逻辑就留给具体的子类去实现。 (适合本地化,制作一个在日本是日文,在美国是英文的软件……)

桥接模式

将抽象和实现分开,以便它们可以独立更改。

也就是说,软件系统的抽象和实现之间采用组合聚合关系而不是继承关系,使得两者可以独立变化。 (相当于安排了一台电脑装机,将各个模块组合在一起)

适配器模式

将一个类的接口转变为客户端期望的另一个接口,使原本因接口不匹配而无法协同工作的两个类可以协同工作。

外观模式

与子系统的外部通信必须通过统一的外观对象进行。 每个子系统只有一个外观类,并且这个外观类只有一个实例,这意味着它是一种单例模式。 但整个系统可以有多个外观类别。 (多个子系统方法需要由单一外观类统一管理,采用统一接口方便消费者使用)

蝇量模式

享元模式大大减少了内存中对象的数量。 使用享元模式的主要目的是优化内存,相同的功能可以并行使用。

原型图案

允许动态添加或减少产品类别。 产品类别不需要具有任何预定的层次结构。 原始模型模式适用于任何层次结构。 缺点是每个类都必须配备clone方法。

责任链模型

在责任链模式中,许多对象通过每个对象对其后代的引用连接起来形成一条链。 请求沿着链向上传递,直到链中的对象决定处理该请求为止。 处理者有两种选择:接受责任或将其传递给下一方。 请求最终不能被任何接收对象接受。 (例如:我晚上去上英语课,坐在最后一排只是为了走开。哇,我前面坐着几个漂亮的女孩。找一张纸,写上“Hi, can you be我女朋友?如果你不愿意的话,请转发。”纸条被一张又一张地传了过去。哎呀,第一排的女孩把纸条传给了老师)

中介模式

中介者模式封装了一系列对象交互的方式,

这样这些对象就不必彼此发生显着的交互。 这使得它们能够松散耦合。

当某些对象之间的交互发生变化时,不会立即影响其他对象之间的交互。 (如:TCP/IP打洞技术)

装修模式

装饰模式以对客户端透明的方式扩展对象的功能。 它是继承关系的替代方案,并提供比继承更大的灵活性。 动态地向对象添加函数,并且这些函数可以动态地撤消。 添加大量由一些基本功能的排列和组合产生的功能。

状态模式

目的是让对象在其内部状态发生变化时改变其行为。 状态模式要求为系统可能获得的每个状态创建状态类的子类。 当系统的状态改变时,系统改变所选择的子类。 (比如:晚上12点睡觉,早上8点起床……就是这样的状态)

作曲模式

将对象组织成树结构可以用来描述整体和部分之间的关​​系。 组合模式是处理对象的树结构的模式。 综合模式采用树形结构来表达部分与整体之间的关系。 (对于树结构)

如果你的基础基础较差,可以观看下面的专栏教程。

《C语言51课视频教程合集》

《C++45视频教程》

它通俗易懂,深入浅出地解释了深奥的事情。 每个视频只讲一个知识点,视频并不深刻,不需要深入学习。 可以在公共交通工具上或在当地使用。

标签: 模式 对象 抽象

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码