![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
WonderMew
c++ Qt
展开
-
装饰者模式
概念装饰者模式动态地将责任附加到对象上. 如要扩展功能, 装饰者提供了比继承更有弹性的替代方案.装饰者与和被装饰者必须有相同的超类, 这是相当关键的地方, 在此模式中, 我们利用继承达到"类型匹配", 而不是利用继承来获得"行为"适用场景1 在不影响其他对象的情况下,以动态、透明的方式给单个对象(或一个类)添加职责。2 需要动态的给一个类添加功能原创 2017-06-23 14:43:57 · 225 阅读 · 0 评论 -
代理模式
概念代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问.原创 2017-09-12 09:36:28 · 215 阅读 · 0 评论 -
状态模式
概念状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.这个描述中的第一部分的含义:这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变,当对象处于不同状态时,就会得到不同的行为.第二部分的含义:如果说你使用的对象能够完全改变它的行为,那么你会觉得,这个对象实际上是从别的类实例化而来的.然而实际上是在使用组合通过简单引原创 2017-09-08 09:38:09 · 379 阅读 · 0 评论 -
迭代器模式
概念迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 又叫做游标(cursor)模式适用场景1. 访问一个聚合对象的内容而无需暴露它的内部表示2. 需要为聚合对象提供多种遍历方式3. 为遍历不同的聚合结构提供统一个统一的接口结构原创 2017-08-31 10:06:26 · 275 阅读 · 0 评论 -
策略模式
概念策略模式(strategy)定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。适用场景当存在以下情况时使用Strategy模式1. 许多相关的类仅仅是行为有异时, 将这种行为独立进行抽象成一族算法, 使用得类能够对算法进行动态配置。即一个系统动态地在几种算法中选择一种。2. 需要使用一个算法的不原创 2017-06-20 09:19:21 · 262 阅读 · 0 评论 -
用模式思考
文中内容收集整理自《Head First 设计模式 中文版 》,版权归原书所有设计模式的目的管理软件的复杂度和变化.如何正确的使用模式当你确信你的设计中有一个问题需要解决的时候,或者当你确信未来的需求可能会改变时,都可以采用模式.然而模式可能带来复杂性,如果没有必要,我们绝不需要这样的复杂性. 1. 应该保持简单, 在实际的开发中, 目的是以简单的方式解决某个问题, 而为了模式而模式, 这样只会让原创 2017-09-14 10:37:46 · 228 阅读 · 0 评论 -
复合模式(Compound Pattern)之MVC模式
文中内容收集整理自《Head First 设计模式 中文版 》,版权归原书所有复合模式复合模式是由模式所构成的模式.,复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题. 复合模式必须够一般性,适合解决许多问题才行.MVC模式MVC(model-view-controller) , 分别是模型-视图-控制器.MVC是一个威力强大的复合模式,结合了原创 2017-09-13 20:30:36 · 714 阅读 · 0 评论 -
观察者模式
概念观察者模式定义了对象之间的一对多依赖, 这样一来, 当一个对象改变状态时, 它的所有依赖者都会受到通知并自动更新.适用场景1. 当一个对象的改变需要同时改变其他对象的, 或者要通知其他对象2. 当一个抽象模型有两个方面, 其中一个方面依赖于另一个方面, 应该将这两者封装成独立的对象, 使它们可以各自独立的改变和复用在以下任一情况下可以使用观察者模式:结构原创 2017-06-22 10:33:36 · 193 阅读 · 0 评论 -
组合模式
概念组合模式允许你将对象组合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合.组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象.使用组合结构,我们能把相同的操作应用在组合和个别对象上.换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别.适用场景1. 当有数个对象的集合,他们彼此之间又"整体/原创 2017-09-05 10:16:57 · 261 阅读 · 0 评论 -
模板方法模式
概念模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。适用场景1 一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。2 将各子类中公共的行为提取出来并集中到一个公共父类中以避免代码重复。3 控制子类扩展。模板方法只在特定点调用"hook"操作,这样就只允许在这些点进行原创 2017-08-15 20:23:48 · 248 阅读 · 0 评论 -
适配器模式
概念适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。分类类适配器 通过多重继承来适配被适配者对象适配器 通过组合来适配被适配者适用场景当需要适用一个现有的类而其接口并不符合你的需要时,就是用适配器你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。结构对象适配器类适配器 - 目标(原创 2017-08-02 16:18:50 · 191 阅读 · 0 评论 -
外观模式
概念外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。适用场景原创 2017-08-02 20:19:43 · 207 阅读 · 0 评论 -
命令模式
概念命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式又称为动作(Action)模式或事务(Transaction)模式。适用场景在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“原创 2017-07-25 13:28:02 · 281 阅读 · 0 评论 -
工厂模式
简单工厂简单工厂一般是提供一个类, 专门封装对象的创建的细节, 即提供一个接口, 根据不同输入创建不同的对象, 这样做的好处是, 用户不必关心创建对象的细节, 从而针对接口编程, 而不是针对实现编程. 一个常见的技巧就是静态工厂, 即提供一个静态方法用于创建对象, 这样做的好处是不需要用创建对象的方法来实例化对象, 但缺点就是不能通过集成来改变创建方法的行为.简单工厂并不是一种设计模式,原创 2017-07-07 10:32:05 · 251 阅读 · 3 评论 -
设计模式--设计原则
设计原则1: 把问题归零封装变化如果每次新的需求一来,都会使某方面的代码发生变化, 那么你就可以确定,这部分的代码需要被抽出来, 和其他稳定的代码有所区分。找出应用中可能需要变化之处, 把它们独立出来, 不要和那些不需要变化的代码混在一起把会变化的部分取出来并封装起来, 以便以后可以轻易地改动或扩充此部分, 而不影响不需要变化的其他部分, 这使得系统变得更有弹性例如原创 2017-06-15 19:56:37 · 262 阅读 · 0 评论