
设计模式
baidu_25211613
这个作者很懒,什么都没留下…
展开
-
Bridge模式
将抽象部分与它的实现部分分离,使得它们可以独立地变化,提高低耦合AbstractionImp *imp = new ConcreateAbstractionImpA; Abstraction *abs = new RefinedAbstraction(imp); abs->Operation(); 这样抽象类就可以使用ConcreateAbstractionImpA的方法转载 2015-05-11 10:13:52 · 322 阅读 · 0 评论 -
Prototype模式==原型模式
提供自我复制的功能,就是说新对象的创建可以通过已有对象进行创建,浅层拷贝和深层拷贝转载 2015-05-07 16:00:37 · 353 阅读 · 0 评论 -
factory工厂模式
1.factory模式两个重要的功能:1)定义创建对象的接口,封装了对象的创建;2)使得具体化类的工作延迟到了子类中。Factory模式仅仅局限于一类类(就是说Product是一类,有一个共同的基类),如果我们要为不同类的类提供一个对象创建的接口,那就要用AbstractFactory了。 我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用转载 2015-05-07 10:35:26 · 274 阅读 · 0 评论 -
Singleton模式 单例模式
保证全局只有一个类的对象,创建一个唯一的对象,通过提供一个static的接口instance来获得这个唯一的实例。转载 2015-05-07 14:07:13 · 241 阅读 · 0 评论 -
Builder模式---创建者
解决的问题:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要把复杂对象的创建过程和这个对象的表示分离开来。#include "stdafx.h"#include "Director.h"#include "Builder.h"Director::Director(Builder * bld){ _bld = bld;}Director::转载 2015-05-07 14:52:52 · 278 阅读 · 0 评论 -
AbstactFactory模式 (抽象工厂)
解决的问题:要创建一组相关或者相互依赖的对象AbstractFactory模式关键就是将这一组对象的创建封装到一个用于创建对象的类(ConcreteFactory)中,维护这样一个创建类总比维护n多相关对象的创建过程要简单的多。优点1、分离了具体的类。抽象工厂模式帮助你控制一个应用创建的对象的类,因为一个工厂封装创建产品对象的责任和过程。它将客户和类的实现分离,客户通过他们的抽象接转载 2015-05-07 11:14:32 · 289 阅读 · 0 评论 -
Memento模式 备忘录模式
Memento模式的关键就是要在不破坏封装行的前提下,捕获并保存一个类的内部状态,这样就可以利用该保存的状态实施恢复操作。为了达到这个目标,可以在后面的实现中看到我们采取了一定语言支持的技术。转载 2015-05-13 10:53:05 · 390 阅读 · 0 评论 -
State模式 状态模式
实现至少有以下两个问题:1)当状态数目不是很多的时候,Switch/case可能也可以搞定,但是当状态数目很多的时候,维护一大组的Switch/case语句将是一件异常困难并且容易出错的事情。2)状态逻辑和动作实现没有分离,在很多的系统实现中,动作的实现代码直接写在状态的逻辑当中。者带来的后果就是系统的扩展性和维护得不到保证。转载 2015-05-12 15:36:07 · 319 阅读 · 0 评论 -
Strategy模式 策略模式
Strategy模式和Template模式要解决的问题是相同(类似)的,都是为了给业务逻辑(算法)具体实现和抽象接口之间的解耦。Strategy模式将逻辑封装到一个类,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。转载 2015-05-12 15:02:08 · 299 阅读 · 0 评论 -
Observer模式 观察者模式
解决问题为:建立一对多的依赖关系一个更新,全部更新转载 2015-05-12 16:40:14 · 324 阅读 · 0 评论 -
Template模式 模板模式
Template模式采用继承的方式实现这一点:将逻辑框架放在抽象基类中,并定义好细节的接口,子类中实现细节转载 2015-05-12 14:42:58 · 507 阅读 · 0 评论 -
Proxy模式 代理模式
1)创建开销大的对象时候,比如显示一副图片,我们将创建的过程交给代理去完成,即虚代理2)为网络上的对象创建一个局部的本地代理3)对对象进行控制访问的时候,4)智能指针 Subject *sub = new ConcreteSubject(); Proxy *p = new Proxy(sub); p->Request(); Proxy::Proxy()转载 2015-05-11 17:50:49 · 326 阅读 · 0 评论 -
facade模式 界面统一模式
在遇到以下情况使用Facade模式:1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade转载 2015-05-11 17:14:36 · 476 阅读 · 0 评论 -
Flyweight模式 享元模式
面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以被共享的类,另外,还有一些特性是取决于应用(context),是不可共享的,这也是Flyweight中两个重要概念--内部状态intrinsic和外部状态转载 2015-05-11 16:40:32 · 293 阅读 · 0 评论 -
Adapter模式 适配器模式
类模式和对象模式类模式是通过继承实现的,对象模式通过定义对象实现 Adapter模式提供了将一个类(第三方库)的接口转化为客户(购买使用者)希望的接口。原创 2015-05-11 10:39:18 · 492 阅读 · 0 评论 -
C++浅复制 多态 友元 纯虚函数虚类
1.复制构造函数要求构造函数的参数为自身类类型的引用类名::类名(const 类名 & 引用名,。。。)调用复制构造函数的时机当说明语句建立对象时,可以调用复制构造函数进行数据初始化,另外,当函数具有类类型传值参数或者返回类类型值时,都需要调用复制构造函数,完成局部对象的初始化。深复制和浅复制当类的数据成员是简单数据类型时,在创建对象时,默认复制构造函数工作的很好。转载 2015-05-07 16:05:16 · 723 阅读 · 0 评论