设计模式
文章平均质量分 69
张慕风
这个作者很懒,什么都没留下…
展开
-
设计模式学习笔记(C++实现)(一)--设计模式简介和分类
1.设计模式简介什么是设计模式 个人认为,所谓设计模式,就是前人总结出来针对特定一类问题的解决方案。每种设计模式都有自己的应用场景、解决方案和具体效果。设计模式学习资料 <<设计模式-可复用面向对象软件的基础>&amp原创 2018-05-20 07:54:50 · 787 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(九)--组合模式
1.组合模式简介英文名称 Composite主要目的 该模式将对象组合成树形结构已表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。使用场景 1.当你想表示对象的部分-整体层次结构时; 2.你希望用户忽略组合对象与单个对象的不同时,用户将统一地使用组合结构中的所有对象。2.组合模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS...原创 2018-05-23 07:46:59 · 223 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十七)--迭代器模式
1.迭代器模式简介英文名称 Iterator主要目的 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。使用场景 1.访问一个聚合对象的内容,而无需暴露其内部表示的时候; 2.支持对聚合对象的多种遍历; 3.为遍历不同的聚合结构提供一个统一的接口。2.迭代器模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操...原创 2018-05-27 19:44:44 · 205 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十八)--中介者模式
1.中介者模式简介英文名称 Mediator主要目的 用一个中介对象来风筝一系列的交互。中介者使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以改变它们之间的交互方式。使用场景 1.一组对象定义良好,但是与其进行通信的方式很复杂; 2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象; 3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。...原创 2018-05-28 07:54:12 · 251 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十)--装饰模式
1.装饰模式简介英文名称 Decorator主要目的 该模式可以动态地给一个对象添加一些额外的职责。使用场景 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责; 2.处理那些可以撤销的职责; 3.当不能采用生成子类的方法进行扩充时。2.装饰模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64...原创 2018-05-23 21:03:09 · 263 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十九)--备忘录模式
1.中介者模式简介英文名称 Memento主要目的 用一个中介对象来风筝一系列的。使用场景 1.一组对象定义良好,但是与其进行通信的方式很复杂; 2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象; 3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。2.中介者模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 ...原创 2018-05-29 07:43:33 · 220 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十一)--外观模式
1.外观模式简介英文名称 Facade主要目的 为子系统中的一组接口提供一个一致的界面。外观模式定义了一个高层接口,这个接口使得这一系统更加容易使用。使用场景 1.当你要为一个复杂子系统提供一个简单接口时; 2.客户程序与抽象类的实现部分之间存在很大的依赖性时; 3.当你需要构建一个层次结构的子系统时,使用外观模式可以定义子系统中每层的入口点。2.外观模式代码示例测...原创 2018-05-24 21:26:58 · 214 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二十)--观察者模式
1.观察者模式简介英文名称 Observer主要目的 定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。使用场景 1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面; 2.当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变; 3.当一个对象必须通知其他对象,而它又不能假定其他对象是谁。2.观察...原创 2018-05-30 07:23:24 · 279 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二十一)--状态模式
1.状态模式简介英文名称 State主要目的 允许一个对象在其内部状态改变时,改变其行为。使用场景 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为; 2.一个操作中含有庞大的多分支条件语句,且这些分支依赖于该对象的状态。2.状态模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64代码...原创 2018-05-31 21:20:27 · 200 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二十二)--策略模式
1.策略模式简介英文名称 Strategy主要目的 定义一系列算法,把它们一个一个封装起来,并且使它们可以相互替换。策略使得算法可以独立于使用它的客户而变化。使用场景 1.许多相关的类仅仅是行为有差别; 2.需要使用一个算法的不同变体时; 3.算法使用了客户不需要的数据。通过策略模式,可以避免暴露于算法有关的数据结构; 4.一个类定义了多种行为,并且这些行为在这个类的操作中是...原创 2018-06-01 07:28:36 · 266 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二十三)--模板方法模式
1.模板方法模式简介英文名称 Template Method主要目的 该模式定义一个操作中的算法的基本框架,而将一些步骤延迟到子类中进行。模板方法模式可以使得子类在不改变算法框架的情况下,重定义该算法的某些特定步骤。使用场景 1.一次性实现一个算法不变的部分,并将可变的部分留给子类来实现; 2.各个子类的公共行为被提取出来并集中到一个公共父类中进行,从而减少代码重复; 3.控制...原创 2018-06-01 21:34:21 · 305 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十六)--解释器模式
1.解释器模式简介英文名称主要目的 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持撤销的操作。使用场景 1.抽象出待执行的动作以参数化某对象; 2.在不同的时刻指定、排列和执行请求; 3.支持请求的取消操作; 4.支持修改日志,这样当系统崩溃时,这些修改可以重做一次; 5.用构建在原语操作上的高层操作构建一个系统...原创 2018-05-27 17:29:08 · 269 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十五)--命令模式
1.命令模式简介英文名称 Command主要目的 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持撤销的操作。使用场景 1.抽象出待执行的动作以参数化某对象; 2.在不同的时刻指定、排列和执行请求; 3.支持请求的取消操作; 4.支持修改日志,这样当系统崩溃时,这些修改可以重做一次; 5.用构建在原语操作上的高层...原创 2018-05-27 12:52:36 · 258 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二)--工厂方法模式
1.工厂方法模式简介英文名称 Factory Method主要目的 定义一个用来创建对象的接口,从而让其子类来决定实例化哪一个类。工厂方法能使一个类的实例化行为,延迟到其子类中进行。使用场景 1.当一个类不知道它所必须创建的对象的类的时候; 2.当一个类希望由它的子类来指定它所创建的对象的时候。2.工厂方法代码示例测试平台 1.开发语言:C++ 2.开发工具:VS...原创 2018-05-20 08:53:46 · 548 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(三)--抽象工厂模式
1.抽象工厂模式简介英文名称 Abstract Factory主要目的 该模式一系列相关或者相互依赖对象的接口,而不用指定它们具体的类。使用场景 1.一个系统需要独立于它的产品的创建、组合和表示时; 2.一个系统要由多个产品系列中的一个来配置时; 3.当你要强调一血了相关的产品对象的设计以便进行联合使用时; 4.当你提供一个类库,而只想显示它们的接口而不是实现的时候。2...原创 2018-05-20 16:08:44 · 467 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(四)--建造者模式
1.建造者模式简介英文名称 Builder主要目的 该模式可以将一个复杂对象的构建和其的表示分离,使得同样的构建过程可以创建不同的表示。使用场景 1.当构建复杂对象的算法应该独立于该对象的组成部分以及其装配方式时; 2.当构建过程必须允许被构建对象有不同的表示时。2.建造者模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Wi...原创 2018-05-20 22:09:38 · 585 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(五)--原型模式
1.原型模式简介英文名称 Prototype主要目的 用原型实例来指定出创建对象的总类,并且通过拷贝这些原型来创建新的对象。使用场景 1.当一个系统应该独立于它的产品创建、构成和表示的时候; 2.当要实例化的类是在运行时刻指定的时候,如通过动态加载; 3.为了避免创建一个与产品类层次平行的工厂类层次时; 4.当一个类的实例只能有几个不同状态组合中的一种时。2.原型模...原创 2018-05-21 07:43:37 · 655 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(六)--单例模式
1.单例模式简介英文名称 Singleton主要目的 该模式用于保证一个类仅有一个实例,并且提供一个访问它的全局访问点。使用场景 1.当一个类只能有一个实例而且客户都可以从一个总所周知的访问点访问它时; 2.当这个唯一的实例应该通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。2.单例模式代码示例测试平台 1.开发语言:C++ 2.开发工具:V...原创 2018-05-21 22:00:49 · 334 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十二)--享元模式
1.享元模式简介英文名称 Flyweight主要目的 利用享元模式,可以有效地支持大量细粒度的对象。使用场景 1.一个应用程序使用了大量的对象; 2.由于完全使用大量的对象,造成很大的存储开销; 3.对象的大多数状态都可以变为外部状态; 4.如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象; 5.应用程序不依赖于对象标识。2.享元模式代码示例测...原创 2018-05-25 21:34:33 · 229 阅读 · 1 评论 -
设计模式学习笔记(C++实现)(七)--适配器模式
1.适配器模式简介英文名称 Adapter主要目的 该模式可以将一个类的的接口,转换成客户想要的另一个接口。使用场景 1.当要使用的两个类功能相同或者相似,但仅仅是接口不同时。2.适配器模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64代码说明 1.OldDevice–老的设备类,该类与目前新的新的设备功能相...原创 2018-05-22 07:36:15 · 306 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(十三)--代理模式
1.代理模式简介英文名称 Proxy主要目的 为其他对象提供一种代理以控制对这个对象的访问。使用场景 1.在需要用比较通用和复杂的对象指针代替简单的指针时,可以用代理模式。2.代理模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64代码说明 1.Ticket–抽象售票类 2.RailwayStation、...原创 2018-05-26 19:55:57 · 350 阅读 · 1 评论 -
设计模式学习笔记(C++实现)(十四)--职责链模式
1.职责链模式简介英文名称 Chain of responsibility主要目的 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。职责链模式将这些要处理请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。使用场景 1.有多个对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定; 2.你向在不明确指定接受者的情况下,向多个对象中的一...原创 2018-05-27 08:28:11 · 334 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(八)--桥接模式
1.桥接模式简介英文名称 Bridge主要目的 该模式可以将抽象部分和它的实现部分分离,使它们都可以独立地变化。使用场景 1.你不希望在抽象和实现部分之间有一个固定的绑定关系; 2.类的抽象以及它的实现都可以通过生成子类的方法加以扩充; 3.对一个抽象的实现部分的修改对客户不产生影响。2.桥接模式代码示例测试平台 1.开发语言:C++ 2.开发工具:VS2015...原创 2018-05-22 20:44:47 · 240 阅读 · 0 评论 -
设计模式学习笔记(C++实现)(二十四)--访问者模式
1.访问者模式简介英文名称 Visitor主要目的 表示一个作用于某对象结构中的各个元素的操作。该模式使得你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。使用场景 1.一个对象结构中包含很多类对象,它们具有不同的接口,而你想对这些对象实施一些不依赖于其具体类的操作; 2.需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免这些操作“污染”这些对象的类;...原创 2018-06-02 08:09:37 · 226 阅读 · 0 评论