設計模式《六》——代理模式

簡介:

       其實每個模式名稱就表明了該模式的作用,代理模式就是多一個代理類出來,替原對象進行一些操作,比如我們在租房子的時候回去找中介,爲什麼呢?因爲你對該地區房屋的信息掌握的不夠全面,希望找一個更熟悉的人去幫你做,此處的代理就是這個意思。再如我們有的時候打官司,我們需要請律師,因爲律師在法律方面有專長,可以替我們進行操作,表達我們的想法。

 

角色與職責:

 

Subject: 抽象角色。聲明真實對象和代理對象的共同接口。

Proxy: 代理角色。代理對象與真實對象實現相同的接口,所以它能夠在任何時刻都能夠代理真實對象。代理角色內部包含有對真實對象的引用,所以她可以操作真實對象,同時也可以附加其他的操作,相當於對真實對象進行封裝。

RealSubject: 真實角色。它代表着真實對象,是我們最終要引用的對象

實現:

#include <iostream>
using namespace std;
class IFactory {
public:
    IFactory() {}
    virtual void makeProduct() = 0;
};
class PhoneFactory : public IFactory{
public:
    PhoneFactory() {}
    virtual void makeProduct(){
        cout << "生產手機" << endl;
    }
};
class FoxconnProxy : public IFactory{
public:
    FoxconnProxy(IFactory* factory){
        m_real = factory;
    }
    virtual void makeProduct(){
        highProduct();
        m_real->makeProduct();
    }
    void highProduct() {
        cout << "高速生成手機" << endl;
    }
private:
    IFactory* m_real;
};
int main(int argc, char* argv[]) {
    IFactory* factory = new PhoneFactory();
    FoxconnProxy* foxconn = new FoxconnProxy(factory);
    foxconn->makeProduct();
    cin.get();
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章