`
kmplayer
  • 浏览: 498427 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式之代理模式和状态模式

阅读更多
1,代理(Proxy)模式基本思想:代理类派生自一个基类,由平行地派生自同一个基类的一个或多个类提供实际的实现.
2,代理模式和状态模式的区别:代理模式只有一个实现类,而状态模式有多个.
3,代码
#include <iostream>
using namespace std;

class ProxyBase
{
public:
    virtual void f()=0;
    virtual void g()=0;
    virtual void h()=0;
    virtual ~ProxyBase(){}
};

class Implemention : public ProxyBase
{
public:
    void f(){ cout<<"Implemention.f()"<<endl; }
    void g(){ cout<<"Implemention.g()"<<endl; }
    void h(){ cout<<"Implemention.h()"<<endl; }
};

class Proxy : public ProxyBase
{
    //定义基类指针接收实现类
    ProxyBase* pB;
public:
    //构造实现类
    Proxy(){ pB=new Implemention; }
    ~Proxy(){ delete pB; }
    void f(){ pB->f(); }
    void g(){ pB->g(); }
    void h(){ pB->h(); }
};

int main()
{
    Proxy p;
    p.f();
    p.h();
    p.g();
    return 0;
}


4,
#include <iostream>
using namespace std;

class Creature
{
    bool isFrog;
public:
    Creature() : isFrog(true) {}
    void greet()
    {
        if(isFrog)
            cout<<"Frog"<<endl;
        else
            cout<<"Prince"<<endl;
    }
    void kiss(){ isFrog=false; }
};

int main()
{
    Creature cr;
    cr.greet();
    cr.kiss();
    cr.greet();
    return 0;
}

这段代码执行操作前,都必须检查bool变量isFrog.
改用代理模式编写.
#include <iostream>
using namespace std;
class State
{
public:
    virtual string response()=0;
};

class Frog : public State
{
    string response(){ return "Frog"; }
};

class Prince : public State
{
    string response(){ return "Prince"; }
};

class Creature
{
    //基类指针替代布尔变量
    State* pB;
public:
    Creature() : pB(new Frog) {}
    void greet()
    {
        cout<<pB->response()<<endl;
    }
    void kiss(){ pB=new Prince; }
};

int main()
{
    Creature cr;
    cr.greet();
    cr.kiss();
    cr.greet();
    return 0;
}


分享到:
评论

相关推荐

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    23种设计模式之:建造者,代理,观察,策略,状态模式

    用幽默的方式写下这些设计模式,代码里面有相应注解,不会很难理解,每个包里面有1-2个代码事例,还有一点小说明,还有本人qq,现在只有5种,其他的设计模式期待下一个版本吧!

    设计模式课件大全

    设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略...

    java常用23中设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    23种JAVA设计模式和15种J2EE设计模式

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ...

    设计模式-C++

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...

    java设计模式示例

    java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...

    23种设计模式项目实例

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    23种设计模式实例

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    C#23种设计模式样例代码和UML图

    C#23种设计模式样例代码和UML图等 创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式); 行为型模式(策略模式、 迭代器模式、原型模式、职责链模式、 模板方法、 命令模式、 解释器模式、 ...

    Java23种设计模式可直接运行Demo

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ...

    《Java设计模式》详解

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    设计模式的精简版

    java设计模式的精简版,创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式共五种; 结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式共七种。 行为型...

    c# 设计模式 pdf

    单件模式 适配器模式 桥接模式 外观模式 装饰模式 代理模式 组合模式 享元模式 职责链模式 命令模式 解释器模式 迭代器模式 备忘录模式 状态模式 观察者模式 中介者模式 策略模式 模板方法模式 访问者模式

    尚硅谷设计模式源码笔记课件.zip

    2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,...

    23个设计模式完整DEMO

    C#版的23个设计模式完整DEMO,包括: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...

    设计模式自己总结一句话描述

    设计模式分为三大类: 创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、构建者模式、原型模式。 结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。...

    23种设计模式demo

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享...

    研磨设计模式(完整带书签).part2.pdf

    中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。...

Global site tag (gtag.js) - Google Analytics