
设计模式
文章平均质量分 94
浅慕Antonio
分享编程知识
展开
-
【设计模式】享元模式
享元(Flyweight) 模式也称蝇量模式,是一种结构型模式,解决的是面向对象程序设计的性能问题。所谓享元——被共享的单元或被共享的对象,其英文名Flyweight是“轻量级”的意思,指拳击比赛中选手体重比较轻。所以,该模式的作用是为了让对象变“轻”(占用的内存更少),其设计思想是:当需要某个对象时,尽量共用已经创建出的同类对象,从而避免频繁使用new创建同类或者相似的对象;在同类对象数量非常多的情况下,可以达到节省内存占用以及提升程序运行效率的目的。原创 2025-03-31 19:41:35 · 865 阅读 · 0 评论 -
【设计模式】状态模式
状态(State)模式是一种行为型模式,其实现可完成类似有限状态机的功能。换句话说,一个对象可以处于多种不同的状态(当然,同一时刻只能处于某一种状态),从而让对象产生不同的行为。通过状态模式可以表达出这些不同的状态并实现对象在这些状态之间的转换。状态模式最突出的特点是用类来表示状态,这一点与策略模式有异曲同工之妙(策略模式中用类来表示策略)。状态模式与策略模式从 UML 图上看完全相同,只不过两者所运用的场合以及所表达的目的不同。状态模式有一定的难度,不太好理解,请读者认真分析和理解范例代码。原创 2025-03-29 22:55:07 · 868 阅读 · 0 评论 -
【设计模式】组合模式
将对象组织成。原创 2025-03-24 16:16:48 · 867 阅读 · 0 评论 -
【设计模式】迭代器模式
引入面向对象程序设计的一个原则——单一职责原则(Single Responsibility Principle, SRP)一个类应该只有一个引起变化的原因,通俗地说,就是一个类的职责应该单一,应该只做一类事情或者对外只提供一种功能。原创 2025-03-24 14:37:22 · 1325 阅读 · 0 评论 -
【设计模式】命令模式
绘图软件:实现撤销、重做、日志记录等功能。遥控器控制:解耦遥控器与家用电器,灵活控制。任务调度:实现任务的定期调度执行。游戏系统:实现时光倒流、情景回放等功能。原创 2025-03-23 16:57:35 · 812 阅读 · 0 评论 -
【设计模式】外观模式
原则说明迪米特法则一个对象应只与直接朋友交互,降低系统耦合最少知识原则客户端只需了解外观类,无需知道子系统细节。原创 2025-03-23 12:53:23 · 875 阅读 · 0 评论 -
【设计模式】单件模式
意图:保证一个类仅有一个实例,并提供全局访问点。单件类 vs 全局变量:单件类通过封装保证单一实例,全局变量无法阻止多实例。多线程注意事项:优先在主线程初始化,或使用 C++11 局部静态变量特性。扩展限制:单件类难以继承,需谨慎设计。原创 2025-03-22 22:06:42 · 1150 阅读 · 0 评论 -
【设计模式】装饰模式
装饰模式原创 2025-03-21 23:37:02 · 896 阅读 · 0 评论 -
【设计模式】观察者模式
在程序设计中,需要为某对象建立一种“通知依赖关系”,当该对象的状态发生变化时,通过公告或广播的方式通知一系列相关对象,实现对象之间的联动。但这种一对多的对象依赖关系往往会造成该对象与其相关的一系列对象之间一种特别紧密的耦合关系。观察者(Observer)模式是一种使用频率较高的行为型设计模式,可以弱化上述的一对多依赖关系,实现对象之间关系的松耦合。观察者模式在工作中往往会在不知不觉中被用到。原创 2025-03-20 16:43:39 · 915 阅读 · 0 评论 -
【设计模式】策略模式
策略(Strategy) 模式是一种行为型模式,其实现过程与模板方法模式非常类似——都 是以扩展的方式支持未来的变化。本章通过对一个具体范例的逐步重构来详细讲解策略模 式,在此基础之上,引出面向对象程序设计的一个重要原则——依赖倒置原则,并对该原则 进行详细阐述。原创 2025-03-20 11:24:47 · 1434 阅读 · 0 评论 -
【设计模式】建造者模式
通过上述两个范例,不难看到,建造者设计模式主要用于分步骤构建一个复杂的对象,其中构建步骤是一个稳定的算法(构建算法),而复杂对象各个部分的创建则会有不同的变化。需要创建的产品对象内部结构复杂,产品往往由多个零部件组成。需要创建的产品对象内部属性相互依赖,需要指定创建次序。当创建复杂对象的步骤(过程)应该独立于该对象的组成部分(通过引入指挥者类, 将创建步骤封装在其中)。将复杂对象的创建和使用分离,使相同的创建过程可以创建不同的产品。原创 2025-03-15 20:48:07 · 899 阅读 · 0 评论 -
【设计模式】原型模式
同工厂模式一样,原型(Prototype) 模式也是一种创建型模式。原型模式通过一个对象 (原型对象)克隆出多个一模一样的对象。实际上,该模式与其说是一种设计模式,不如说是 一种创建对象的方法(对象克隆),尤其是创建给定类的对象(实例)过程很复杂(例如,要设 置许多成员变量的值)时,使用这种设计模式就比较合适。原创 2025-03-14 23:42:54 · 1356 阅读 · 0 评论 -
【设计模式】】工厂模式
创建一个类对象的传统方式是使用关键字new, 因为用new 创建的类对象是一个堆对象,可以实现多态。工厂模式通过把创建对象的代码包装起来,实现创建对象的代码与具体 的业务逻辑代码相隔离的目的(将对象的创建和使用进行解耦)。试想,如果创建一个类 A 的对象,可能会写出。原创 2025-03-13 23:45:46 · 1036 阅读 · 0 评论 -
【设计模式】模板方法模式
很多事情是由几个固定的步骤来完成的,例如到饭馆吃饭,需要经历点餐→用餐→结账 这样的步骤,因为这几个步骤是固定的,所以被作为一种样板,这就是“模板方法(Template Method) 模式”名字的由来。但是在这几个固定步骤中,有很多细微的部分可以有差异,例 如在点餐这个环节,有人点的是粤菜,有人点的是鲁菜;在结账这个环节,有人用人民币结 账,有人用信用卡结账……在固定步骤确定的情况下,通过多态机制在多个子类中对每个步 骤的细节进行差异化实现,这就是模板方法模式能够达到的效果。原创 2025-03-13 00:14:44 · 1113 阅读 · 0 评论 -
【设计模式】设计模式介绍
设计模式分很多种,每种一般都用于解决某个软件开发过程中的问题。许多人认为设 计模式有23种,其实,对于这个数字也没必要那么教条,当然还有更多的设计模式种类,只 不过是这23种比较经典而已。甚至可以说,如果你有很丰富的程序设计经验,那么你发明 自己的设计模式也没问题。模式,是指事物的标准样式或者针对特定问题的可重用解决方案。换句话说,遇到这类 问题,用这种解决方法;遇到那类问题,用那种解决方法;遇到不同的问题,用不同的解决 方法——这就是模式。原创 2025-03-12 20:10:44 · 1326 阅读 · 0 评论