c++设计模式
先锋小牛
这个作者很懒,什么都没留下…
展开
-
装饰模式(C++)
简述场景说明UML类图对象职责代码实现原创 2017-09-23 15:40:13 · 412 阅读 · 0 评论 -
状态模式(C++)
简述当一个对象内在状态改变时,允许改变其行为,这个对象看起来像改变了其类,单控制一个对象的状态转换的条件表达式过于复杂时,把状态的判断逻辑转移,到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化场景说明状态模式中,不同状态对象表现的也不同。就像变色龙一样,它随自己心情的变化会变成不同的颜色,它心情平静时为蓝色,心情兴奋时就变成了黄色UML类图对象说明State, 抽象的状态类CalmState...原创 2018-05-08 17:21:54 · 391 阅读 · 0 评论 -
单例模式(C++)
简述单例模式,顾名思义,指在一个人程序中这个类只能有一个实例对象,并提供一个访问它的全局点,通常可以让全局变量可以对一个对象访问,当多次访问全局变量时,也只是得到仅有的一个对象的引用。Windows任务管理器和回收站都是非常典型的单例模式。类单例化1,一个基本的类是这样的,它可以实例化无数个对象,如何对他单例化呢?class singleton{public: singl原创 2017-10-31 18:54:04 · 361 阅读 · 0 评论 -
职责链模式(C++)
简述职责链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿者这条链传递请求,直到请求被处理UML类图对象职责Manager:抽象管理者ManagerLeader:组长,处理少于2天的请假请求ManagerProject:项目经理,处理2到7天的请假请求ManagerBoss:老总处理大于7天的由原创 2017-10-31 19:10:35 · 313 阅读 · 0 评论 -
适配器模式(C++)
简述适配器模式可以将一个类的接口转化为客户希望的接口,使原本不兼容不能一起工作的类可以一起工作它可以分为类适配器模式和对象适配器模式。想使用一个已经存在的类,但如果它的接口实现的功能正是我们想要的但是调用方式不同,也就是使用它的方法和你的要求不相同时,就应该考虑用适配器模式,在适配器内部进行处理。场景说明出国旅游时,国外的景点简介都是英文的,如果不会英文就看不懂,这时候就需要一个翻原创 2017-10-31 19:28:15 · 316 阅读 · 0 评论 -
观察者模式(C++)
简述 观察者定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发送改变时会通知所有观察者对象,使他们能够自动更新自己适用场景 当一个对象的改变需要同时改变其他对象的时候使用,一对多的关系。 当一个对象模型有两方面,其中一方面以来另一方面,这时观察者模式可以将这两者封装在独立的对象中使他们各自独立的改变和复用原创 2017-11-26 14:19:09 · 368 阅读 · 0 评论 -
原型模式(C++)
概述 原型模式,用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需要指定任何创建过程使用场景 一个类初始化数据较多,创建过程繁琐使,可以用已经创建好的对象拷贝一份想要获取一个对象的状态时,使用原型模式创建一个新对象,新对象的修改不会影响已有的对象类初始化需要消耗的资源原创 2017-11-26 14:02:36 · 367 阅读 · 0 评论 -
依赖倒转原则(C++)
概念 高层模块不应依赖低层模块,低层模块也不应依赖高层模块,两个都应该依赖抽象层。抽象不应该依赖细节,细节应该依赖抽象。简述 依赖倒置原则是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降原创 2017-09-03 17:32:29 · 2673 阅读 · 0 评论 -
开闭原则(C++)
概念 就一个类而言,应该仅有一个引起它变化的原因。每个类实现一个功能。简述 单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而极大的损伤其内聚性和耦合度。单一职责,通常意味着单一的功能,因此不要为类实现过多的功能点,以保证原创 2017-09-02 22:24:25 · 2637 阅读 · 0 评论 -
单一职责原则(C++)
概念 就一个类而言,应该仅有一个引起它变化的原因。每个类实现一个功能。简述 单一职责原则可以看作是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而极大的损伤其内聚性和耦合度。单一职责,通常意味着单一的功能,因此不要为类实现过多的功能点,以保证实原创 2017-08-31 21:06:19 · 1264 阅读 · 0 评论 -
类之间关系描述
简述 在面向对象编程中,类之间有各种各样的相互关系,常见的关系有 。原创 2017-08-27 18:45:48 · 2117 阅读 · 1 评论 -
合成复用原则(C++)
概念尽量使用合成/聚合的方式,而不是使用继承。简述当想给一个类增加新的功能,有三种方法,第一种就是直接修改代码,第二种是通过继承方式,第三种是通过组合方式,那么这三种孰优孰劣哪?该选择哪种哪?场景一:比如当前有个类A,成员函数Func1(),现在想要增加个新功能Func2()。可以直接修改代码UML类图修改前:原创 2017-09-24 12:19:24 · 1388 阅读 · 0 评论 -
UML类图快速入门
简述 画UML类图是学习设计模式的基础技能之一,今天用StarUML工具制作一个类图。流程 1,双击运行StarUML,选择Empty Project图标,点击确定,创建一个空项目 2,右击Untitled- >add- > Model,点击Model创建一空个模型test 结果:原创 2017-08-13 21:03:28 · 734 阅读 · 0 评论 -
命令模式(C++)
简述 命令模式能比较容易的设计一个命令队列,在需要的情况下可以将命令计入日志,接收请求的一方可以否决请求。而且加进新的具体命令类不影响其他的类,因此可以比较容易的增加新的具体的命令类。场景说明 相信大家都去过饭店吧。去了之后,首先叫服务员过来点菜,有炒饭,烧茄子,烤鱼等等(我最喜欢吃的),服务员会记录下菜名,然后交到厨房,厨师做饭。应该没有人会直接跑到后厨让厨师做饭吧,原创 2017-09-23 20:15:43 · 938 阅读 · 0 评论 -
工厂模式(C++)
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现类,选择判断的问题在客户端,想要增加功能,修改客户端。而简单工厂是在内部进行逻辑判断。现在有苹果和梨两种水果,而水果的生产流程复杂,所以需要水果工厂来生成。现开一个苹果工厂和梨工厂,各自生成自己的水果,当用户需要水果时,直接向工厂提出生产就可以了。不必和每个水果打交道原创 2017-09-23 19:39:06 · 859 阅读 · 0 评论 -
建造者模式(C++)
简述将一个复杂对象的构建与它的表示分离,使同样的构造过程可以创建不同的表示,用户通过指定建造的类型就可以得到它们,而不需要关心具体的建造过程和细节,场景说明,建造一辆车是比较复杂的,一辆车的部件必须包括车身,轮胎和引擎,但不同车辆的部件是不同的。比如卡车和小轿车,它们建造流程相同,都需要车身,轮胎和引擎,但它们的建造的部件规格,大小显然是不同UML类图对象说明Director 指挥者,指挥建造产品...原创 2018-05-08 17:21:40 · 572 阅读 · 0 评论