
设计模式
文章平均质量分 81
MatthewMao
千里之行,始于足下;九层之台,起于累土
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式15:中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,旨在通过一个中介对象来封装一系列对象之间的交互方式,从而减少这些对象间的直接依赖。在该模式下,各个组件(同事)不再直接相互通信,而是通过中介者进行间接沟通,这极大地降低了系统的耦合度。具体来说,中介者定义了同事类之间的通信接口,并负责协调同事对象之间的交互逻辑。每个同事类都知道其对应的中介者对象,但并不直接与其他同事类交互。原创 2025-02-18 21:06:04 · 1101 阅读 · 0 评论 -
设计模式14:职责链模式
职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者链传递,直到有一个处理者能够处理该请求。这种模式通过避免发送者和接收者之间的直接耦合,使得多个对象都有机会处理请求,从而增强了系统的灵活性和可扩展性。每个处理者包含对其下一个处理者的引用,如果当前处理者无法处理请求,则会将请求转发给其后续的处理者。原创 2025-02-17 21:02:53 · 956 阅读 · 0 评论 -
设计模式13:状态模式
状态模式允许一个对象在其内部状态改变时改变其行为。对象看起来像是改变了其类。使用状态模式可以将状态的相关行为放在各个状态类中,从而实现状态切换的灵活性和可扩展性。用例子来说明,小明是个大学生(对象),简化其状态为:困,饿,饱;简化行为:吃饭,睡觉,打王者;默认情况下小明的行为和状态之间的关系会有偶然性,所以会存在逻辑上的if-else组合,要考虑地全面,这分支无疑会比较多,并且可以出错。如果从状态模式处理小明状态和行为的逻辑问题,可以把小明的状态抽象为状态类(State),各种具体的状态定为其的继承类(原创 2024-12-17 21:11:59 · 1348 阅读 · 0 评论 -
设计模式11:单例模式(全局唯一)
单例模式(Singleton Pattern)是软件工程中的一种设计模式,属于创建型模式。它提供了一种创建对象的最佳数量的方法——即确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。使用单例模式的主要目的是控制资源共享,例如数据库连接、线程池等。原创 2024-12-11 22:02:30 · 1443 阅读 · 0 评论 -
设计模式12:抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是软件设计模式中的一种创建型模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种方式不仅提高了代码的灵活性和可维护性,还使得添加新的产品族变得更为简单,因为只需要增加一个新的具体工厂和相应的产品实现即可。实现了抽象工厂接口,负责创建具体的产品对象。只需创建一个新的具体工厂和相关的产品实现,即可扩展系统支持新的产品族,符合“开闭原则”。确保从同一个工厂创建的产品是兼容的,避免了不同产品族之间的不一致问题。原创 2024-12-12 22:05:48 · 989 阅读 · 0 评论 -
设计模式10:观察者模式(订阅-发布)
观察者模式(Observer Pattern)是软件设计模式中的一种行为型模式。它定义了一种一对多的依赖关系,使得多个观察者对象同时监听一个主题对象(Subject)。当主题对象的状态发生改变时,所有依赖于它的观察者对象都会得到通知并自动更新。想象一下你订阅了一份杂志,当你订阅了这份杂志之后,每当有新一期出版时,杂志社就会自动给你寄一份过来。在这个例子中,你是“观察者”,而杂志社是“主题”。就像是杂志社,它持有一份订阅名单(即观察者的列表)。原创 2024-12-04 22:03:28 · 1012 阅读 · 0 评论 -
设计模式09:建造者模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:https://blog.csdn.net/jxh_123/article/details/37929843对上述链接作者表示感谢,如有侵权,望告知,立删!一:相关问题及模式提出各个手机品牌在生产手机的时候,都是有固定的流程的,先生产手机相机,耳机,屏幕等,由于需要做的事从结果来看是一样,先组装,最后行成手机的样式,这里将组装过程和最后的表示(组装后的.原创 2021-02-23 10:10:52 · 261 阅读 · 0 评论 -
设计模式08:外观模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:https://www.cnblogs.com/ring1992/p/9593112.html对上述链接作者表示感谢,如有侵权,望告知,立删!一:相关问题在股民在炒股时,由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件就是耦合性过高。而有了基金之后,变成众多用户只和基金打交道,关心基金的上涨和下跌就可以了。而实际上的操作确实基金经理人在与上.原创 2021-02-20 14:00:10 · 175 阅读 · 0 评论 -
设计原则05:无熟人难办事-迪米特原则
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387无熟人难办事-迪米特原则:(截图来自于《大话设计模式》)1.简介2.模式与意义:迪米特法则可以简单说成:talk only to your immediate friends。 对于OOD来说,又被解释为下面几种方式:一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软..原创 2021-02-19 17:50:44 · 180 阅读 · 0 评论 -
设计模式07:模板方法模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:对上述链接作者表示感谢,如有侵权,望告知,立删!一:概述二:结构与实现结构图:三:应用例子参考《大话设计模式》,面试出题目时,每个面试者面对的都是同样的面试题,但他们的答案会有所不同,所以可以利用模板方法模式,将题目部分作为共同部分放在父类中,将面试者的答案作为不同部分,由各子类(面试者)去...原创 2021-02-19 17:10:22 · 185 阅读 · 0 评论 -
设计模式06:原型模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:对上述链接作者表示感谢,如有侵权,望告知,立删!一:概述在这个定义中,最重要的一个词是“拷贝”,也就是口头上的复制,而这个拷贝,也就是原型模式的精髓所在。二:结构与实现结构图:由于克隆需要一个原型,而上面的类图中Prototype就这个原型,Prototype定义了克隆自身的Clone接口,由派生类进行实现,而实现原型模式的重..原创 2021-02-19 15:26:23 · 178 阅读 · 0 评论 -
设计模式05:工厂方法模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:https://www.cnblogs.com/ring1992/p/9592667.htmlhttps://blog.csdn.net/u013216156/article/details/94859304对上述链接作者表示感谢,如有侵权,望告知,立删!一:概述工厂方法模式(Factory Method pattern):定义了一个用于创建对象的.原创 2021-02-01 15:48:23 · 277 阅读 · 0 评论 -
设计模式04:代理模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:https://www.cnblogs.com/daniels/p/8242592.htmlhttps://www.runoob.com/design-pattern/proxy-pattern.htmlhttps://blog.csdn.net/a369189453/article/details/81275740一:概述代理模式(proxy.原创 2021-01-27 15:25:07 · 201 阅读 · 0 评论 -
设计模式03:装饰模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387参考:https://blog.csdn.net/hnust_xiehonghao/article/details/25653819https://www.cnblogs.com/adamjwh/p/9036358.html一:概述装饰模式(Decorator,有些地方或称作Wrapper):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成.原创 2021-01-26 15:43:44 · 274 阅读 · 0 评论 -
设计原则04:会修电脑不会修收音机-里氏代换
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387会修电脑不会修收音机-里氏代换:(截图来自于《大话设计模式》)1.父类增加了新的接口,但并不影响子类的功能,子类无须做修改;开放,封闭原则;2.如图,只需要改彼此间的接口,而需要影响自身模块的修改;启发:里氏代换原则的效果就是子类包含所有的父类的非private的属性和行为,像企鹅不能飞,但是鸟...原创 2021-01-15 15:35:25 · 202 阅读 · 0 评论 -
设计原则03:会修电脑不会修收音机-依赖倒转原则
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387会修电脑不会修收音机-依赖倒转原则:(截图来自于《大话设计模式》)思考:程序有没有用到过的这个地方?这里大致明白意思是:高层模块和底层模块间依赖性不应过强,应该需要标准的接口,通信的内存接口,通用的主板接口。...原创 2021-01-15 15:29:51 · 276 阅读 · 0 评论 -
设计原则02:开放-封闭原则
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387开放封闭原则:如下图就像创建udpsocket时,你可能会想到需要创建tcp,所以就需要创建一个基类socket,来避免后期增加tcp时,修改udp处的代码;...原创 2021-01-11 17:32:47 · 189 阅读 · 0 评论 -
设计原则01:单一职责原则
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387单一职责原则理解:就一个类而言,应该仅有一个引起它变化的原因;俄罗斯方块例子部分分析:...原创 2021-01-11 16:56:04 · 140 阅读 · 0 评论 -
设计模式02:策略模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387策略模式:策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式计算法的变化,不会影响到使用算法的客户。例子名称:商场收银系统例子分析:商场收银时如何促销,打折或是返利,都是一些算法,算法本是一种策略,最重要的时这些算法随时可能相互替换的,这就是变化点,而封装变化点是我们面向对象的一种很重要的思维方式。策略模式结构图:...原创 2021-01-10 16:19:07 · 249 阅读 · 3 评论 -
设计模式01:简单工厂模式
系列总链接:https://blog.csdn.net/qq_22122811/article/details/112360387用简单工厂模式完成计算器+,-的过程代码:#include <iostream>using namespace std;// 计算法则基类class Operation{public: virtual ~Operation(){ cout << "virtual ~Operation()" <&l.原创 2021-01-08 15:20:03 · 189 阅读 · 0 评论 -
《大话设计模式》学习记录
设计模式系列是参照IT前辈-程杰编写的《大话设计模式》的内容而来,由于其实现内容是按照依据.Net Framwork的C#来实现的,而我是搞C++,所以我想着用C++的知识将书上相应的例子来实现一遍,不过学习之前,得明确一下:学习设计模式的目的是:1.为了更好从实践的角度去理解面向对象语言,比面向过程语言的易维护,易复用,易扩展的优点;2.为了在编写考虑自己在编写代码时,能够有一个良好的思路,如果设计架构,如果节省资源,如何避免错误等;3.就像篮球运动员一样,在学习了运球,投篮,上...转载 2021-01-08 14:59:58 · 316 阅读 · 0 评论