- 博客(14)
- 收藏
- 关注
原创 设计模式学习笔记(十四)——结构型模式总结
结构型模式总结1、Adapter与Bridge:共同点:它们都给另一对象提供了一定程度上的间接性,有利于系统的灵活。都涉及到从自身以外的一个接口向这个对象转发请求。不同点:Adapter模式主要考虑2个已有接口不匹配的问题,它完全不考虑接口的实现,也不考虑它们各自如何演化。Adapter模式在类已经设计好以后实施。Bridge模式则对抽象接口与它的(可能是多个)实现部分进行桥接,使得你
2007-02-08 10:38:00 679
原创 设计模式学习笔记(十三)——Proxy代理
十二、Proxy(代理)情景举例:为其他对象提供一种代理以控制对这个对象的访问。四种常见情况:(1)远程代理(2)虚代理(3)保护代理(4)智能指针代码示例:/* 这个例子是虚代理的例子。*//* 代理类与实际类公共接口*/class Graphic {public: virtual ~Graphic();/**/ virtual
2007-02-08 10:35:00 649
原创 设计模式学习笔记(十二)——Flyweight享元
十一、Flyweight(享元)情景举例:运用共享技术有效地支持大量细粒度的对象。代码示例:/* Flyweight抽象类。其操作中的GlyphContext下文会介绍*/class Glyph {public: virtual ~Glyph(); virtual void Draw(Window*, GlyphContext&);/*
2007-02-08 10:34:00 689
原创 设计模式学习笔记(十一)——Facade外观
十、Facade(外观)情景举例:为子系统中的一组接口提供一个一致的界面代码示例:/* 系统中各种类*/class Scanner ;class Parser ;class ProgramNodeBuilder ;class ProgramNode ;class CodeGenerator ;class ExpressionNode : public P
2007-02-08 10:32:00 467
原创 设计模式学习笔记(十)——Decorator装饰
九、Decorator(装饰)情景举例:动态地给一个对象添加一些额外的职责。代码示例:/* 装饰与待装饰类共同的抽象类*/class VisualComponent {public: VisualComponent(); virtual void Draw(); virtual void Resize(); // ...
2007-02-08 10:30:00 528
原创 设计模式学习笔记(九)——Composite组成
八、Composite(组成)情景举例:将对象组合成树形结构以表示“部分-整体”的层次结构。代码示例:/* 最关键的抽象类,涵盖了叶子与容器的接口*/class Equipment {public: virtual ~Equipment(); const char* Name() { return _name; }/**/ v
2007-02-08 10:29:00 529
原创 设计模式学习笔记(八)——Bridge桥接
七、Bridge(桥接)情景举例:将抽象部分与它的实现部分分离,使它们都可以独立地变化。代码示例:/* 抽象部分的接口*/class Window {public: Window(View* contents); // requests handled by window virtual void DrawContents();/
2007-02-08 10:26:00 541
原创 设计模式学习笔记(七)——Adapter适配器
六、Adapter(适配器)情景举例:解决类之间由于接口不匹配而不能复用的情况。代码示例:/* 目标类*/class Shape {public: Shape(); virtual void BoundingBox( Point& bottomLeft, Point& topRight ) const; virt
2007-02-08 10:24:00 528
原创 设计模式学习笔记(六)——创建型模式总结
创建型模式主要分为2种,一种是生成创建对象的类的子类的方法,对应于Factory Method模式,其优点是简单,相对于其他模式需要新的类,它只需要新的操作即可。人们通常将Factory Method作为一种标准的创建对象的方法。但这种方法的主要缺点是:仅仅为了改变产品类,就需要创建一个新的子类。最终造成子类庞大而无法管理。 另一种方法是定义一个对象负责明确产品对象的类,并将其作为
2007-02-08 10:18:00 837
原创 设计模式学习笔记(五)——Singleton单件
五、Singleton(单件)情景举例:保证仅有一个迷宫工厂的实例。代码示例:/* 注意静态函数和静态变量,它们实现了单件 构造函数设为protected以供子类访问,若没有子类可以设为private*/class MazeFactory {public: static MazeFactory* Instance(); // exist
2007-02-08 10:17:00 545
原创 设计模式学习笔记(四)——Prototype原型
四、Prototype(原型)情景举例:创建一个可重用的建造迷宫程序。代码示例:/* 原型工厂继承自抽象工厂类*/class MazePrototypeFactory : public MazeFactory {public: MazePrototypeFactory(Maze*, Wall*, Room*, Door*);/**/ virt
2007-02-08 10:16:00 604
原创 设计模式学习笔记(三)——Factory Method工厂方法
三、Factory Method(工厂方法)情景举例:创建一个可重用的建造迷宫程序。代码示例:class MazeGame {public: Maze* CreateMaze();/**/// 以下4个方法为工厂方法:/**/ virtual Maze* MakeMaze() const { return new Maz
2007-02-08 10:13:00 532
原创 设计模式学习笔记(二)——Build生成器
二、Build(生成器)情景举例:创建一个可重用的建造迷宫程序。代码示例:/* 用非抽象类来让客户只定义自己感兴趣的操作*/class MazeBuilder {public: virtual void BuildMaze() { } virtual void BuildRoom(int room) { } virtual void Bui
2007-02-08 09:46:00 614
原创 设计模式学习笔记(一)——Abstract Factory抽象工厂
终于读完了四人组的设计模式,感觉仍有很多地方不理解。果然不是读一次就完全理解的,这里写下一点笔记,整理一下心得,方便以后查阅。笔记主要以代码为主,并结合设计模式迷你手册一同查阅。(设计模式迷你手册中的代码完全照抄四人组的设计模式,但完全不加任何注释,看的晕晕的。)一、Abstract Factory(抽象工厂)情景举例:创建一个可重用的建造迷宫程序。代码示例:c
2007-02-08 09:33:00 621
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人