青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
隨筆 - 398, 文章 - 0, 評(píng)論 - 196, 引用 - 0
數(shù)據(jù)加載中……

設(shè)計(jì)模式之Proxy模式和State模式

Proxy模式和State模式,都是提供一個(gè)Srurogate代理類,代碼只與代理類打交道,實(shí)際工作的類隱藏在代理類的后面。調(diào)用代理類中的一個(gè)方法時(shí),僅僅是調(diào)用實(shí)現(xiàn)類中相應(yīng)的方法。
基本思想:Surrogate代理類派生自一個(gè)基類,實(shí)現(xiàn)類和代理類一樣派生自相同的基類。
Proxy模式和State模式區(qū)別:結(jié)構(gòu)上,Proxy模式只有一個(gè)實(shí)現(xiàn)類,State模式有多個(gè);應(yīng)用上,Proxy控制實(shí)現(xiàn)類的訪問(wèn),State模式動(dòng)態(tài)改變實(shí)現(xiàn)類。

Proxy模式的示例代碼:
#include <iostream>
using namespace std;

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

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

class Proxy : public ProxyBase {
  ProxyBase* implementation;
public:
  Proxy() { implementation = new Implementation(); }
  ~Proxy() { delete implementation; }
  // Forward calls to the implementation:
  void f() { implementation->f(); }
  void g() { implementation->g(); }
  void h() { implementation->h(); }
};

int main()  {
  Proxy p;
  p.f();
  p.g();
  p.h();
}
在某些情況下,Implementtation并不需要和類Proxy有相同的接口,這意味著Proxy類可以任意關(guān)聯(lián)Implementation類并將函數(shù)調(diào)用提交給它。使用共同接口的好處:可以把代理的替代物放到客戶代碼中,另外通過(guò)共同的接口,Iplementation被迫實(shí)現(xiàn)Proxy所需要的方法。代理模式用途:
Remote Proxy:遠(yuǎn)程代理,為在不同的地址空間的對(duì)象提供代理,通過(guò)遠(yuǎn)程代理對(duì)象實(shí)現(xiàn)。
Virtual Proxy:虛擬代理,即lazy initialization;
Protection Proxy:保護(hù)代理,如果不想客戶程序員擁有被代理對(duì)象的所有訪問(wèn)權(quán)限時(shí)使用。
Smart Proxy:智能保護(hù),renference counting引用計(jì)數(shù)就是一個(gè)離子,更簡(jiǎn)單的是對(duì)特定函數(shù)進(jìn)行引用計(jì)數(shù)。

State模式:產(chǎn)生一個(gè)可以改變其類的對(duì)象,它在所有的函數(shù)都有條件代碼時(shí)比較有用。
例子代碼:bool變量的實(shí)現(xiàn)
class Creature {
  bool isFrog;
public:
  Creature() : isFrog(true) {}
  void greet() {
    if(isFrog)
      cout << "Ribbet!" << endl;
    else
      cout << "Darling!" << endl;
  }
  void kiss() { isFrog = false; }
};

int main() {
  Creature creature;
  creature.greet();
  creature.kiss();
  creature.greet();
}
所有的函數(shù)執(zhí)行操作前都要測(cè)試isForg,通過(guò)State模式,就可以避免這樣的情況。
下面是用State模式實(shí)現(xiàn)的代碼:
#include <iostream>
#include <string>
using namespace std;

class Creature {
  class State {
  public:
    virtual string response() = 0;
  };
  class Frog : public State {
  public:
    string response() { return "Ribbet!"; }
  };
  class Prince : public State {
  public:
    string response() { return "Darling!"; }
  };
  State* state;
public:
  Creature() : state(new Frog()) {}
  void greet() {
    cout << state->response() << endl;
  }
  void kiss() {
    delete state;
    state = new Prince();
  }
};

int main() {
  Creature creature;
  creature.greet();
  creature.kiss();
  creature.greet();
} ///:~

posted on 2009-04-12 12:31 Benjamin 閱讀(525) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区国产一区| 国产精品一区二区在线观看不卡| 久久亚洲美女| 久久精品在线观看| 久久久一区二区| 免费成人网www| 欧美mv日韩mv国产网站| 欧美激情精品久久久久久| 欧美激情无毛| 日韩亚洲一区在线播放| 一本综合精品| 久久精品欧美日韩精品| 欧美激情亚洲| 国产精品亚洲综合| 在线国产日韩| 亚洲一卡久久| 老妇喷水一区二区三区| 亚洲蜜桃精久久久久久久| 亚洲尤物在线视频观看| 狂野欧美激情性xxxx欧美| 欧美伦理a级免费电影| 国产精品老女人精品视频| 加勒比av一区二区| 亚洲视频1区| 久久久久免费视频| 亚洲美女免费视频| 久久午夜av| 国产精品一二三视频| 亚洲国产老妈| 久久成年人视频| 亚洲免费成人av电影| 国产伦精品一区二区三区在线观看 | 欧美精品一区二区三区蜜桃| 国产精品久久久久久久久免费桃花 | 亚洲第一在线综合网站| 亚洲国产精品va在看黑人| 亚洲一区二区高清视频| 久久久在线视频| 国产精品久线观看视频| 亚洲精品女av网站| 麻豆国产精品va在线观看不卡 | 久久久噜久噜久久综合| 国产精品美女一区二区在线观看| 亚洲激情国产| 久久亚洲视频| 欧美在线免费视屏| 国产精品你懂的在线欣赏| 一区二区三区视频免费在线观看 | 亚洲人成77777在线观看网| 久久岛国电影| 亚洲天堂av在线免费| 欧美激情一区在线| 最近中文字幕日韩精品| 免费不卡欧美自拍视频| 久久精品99国产精品日本| 国产亚洲精品v| 午夜在线成人av| 亚洲在线视频观看| 国产精自产拍久久久久久蜜| 午夜精品理论片| 亚洲影视中文字幕| 国产精品一区二区三区久久久| 亚洲综合日韩中文字幕v在线| 日韩视频欧美视频| 欧美午夜免费影院| 午夜精品偷拍| 性xx色xx综合久久久xx| 韩国免费一区| 欧美国产日韩一区二区| 欧美久久婷婷综合色| 欧美一区二区三区视频在线观看| 亚洲午夜一二三区视频| 国产精品成人v| 欧美一区二区三区视频在线观看| 午夜伦理片一区| 精品999在线播放| 免费在线观看成人av| 美女国产一区| 亚洲午夜在线观看| 亚洲欧美资源在线| 在线电影国产精品| 亚洲乱码国产乱码精品精98午夜| 欧美亚洲系列| 亚洲国产日韩欧美在线99| 欧美成人免费小视频| 亚洲美女在线一区| 一区二区三区精品久久久| 国产精品久久久久免费a∨大胸| 欧美在线观看日本一区| 另类av一区二区| 亚洲一区日韩在线| 久久久国产视频91| 亚洲午夜久久久| 久久精品国产v日韩v亚洲| 日韩视频精品在线| 欧美一级视频一区二区| 99视频在线观看一区三区| 亚洲欧美另类国产| 亚洲剧情一区二区| 欧美一级艳片视频免费观看| 亚洲精品色婷婷福利天堂| 亚洲综合第一| 亚洲精品在线观看视频| 欧美一区二区在线观看| 日韩午夜免费| 欧美伊人精品成人久久综合97| 亚洲国产欧美另类丝袜| 亚洲综合三区| 亚洲午夜影视影院在线观看| 免费久久久一本精品久久区| 欧美一区二区免费视频| 欧美日韩成人在线观看| 欧美 日韩 国产 一区| 国产精品美女久久久| 亚洲国产精品成人一区二区 | 欧美一区免费视频| 欧美交受高潮1| 免费观看成人| 国产午夜久久久久| 在线一区二区三区四区五区| 最新成人av在线| 久久久精品国产免大香伊| 欧美一区日本一区韩国一区| 欧美日韩一区二区免费视频| 亚洲成人在线网| 伊人久久大香线蕉av超碰演员| 亚洲桃色在线一区| 亚洲一区免费看| 欧美日韩精品一区二区| 亚洲国内精品| 亚洲欧洲美洲综合色网| 久久天天综合| 久久阴道视频| 在线日韩中文| 久久嫩草精品久久久久| 久久人人看视频| 好吊日精品视频| 久久久综合网站| 欧美大色视频| 亚洲国产影院| 免费一级欧美片在线播放| 欧美激情第10页| 亚洲三级影院| 欧美日韩国产黄| 一本一本久久a久久精品牛牛影视| 亚洲国产另类精品专区 | 一个人看的www久久| 男人天堂欧美日韩| 欧美韩国日本综合| 一区二区日韩| 国产精品国产三级国产a| 亚洲欧美日韩高清| 久久频这里精品99香蕉| 在线视频精品| 一区二区三区视频在线播放| 欧美精品九九| 欧美国产日本| 日韩视频免费观看| 欧美精品三级日韩久久| 亚洲国产一区二区在线| 一区二区三区精品| 国产精品一区二区在线观看| 久久国产精品一区二区| 亚洲激情视频在线播放| 亚洲一区视频在线观看视频| 国产日韩欧美麻豆| 久久久久久一区二区| 91久久黄色| 欧美一级在线亚洲天堂| 影音先锋亚洲精品| 欧美精品一区二区三区在线看午夜| 亚洲六月丁香色婷婷综合久久| 亚洲成色精品| 亚洲老板91色精品久久| 欧美在线一二三四区| 91久久精品国产91性色| 国产精品videossex久久发布| 欧美一区二区三区成人| 最近中文字幕日韩精品| 久久精品综合| 亚洲午夜黄色| 亚洲欧洲一区二区三区久久| 国产欧美一区二区精品秋霞影院| 欧美成ee人免费视频| 亚洲一区久久久| 亚洲国产精品悠悠久久琪琪| 欧美一区2区视频在线观看 | 中文精品视频| 欧美激情亚洲自拍| 欧美影院在线| 一区二区三区视频在线| 狠狠色综合网站久久久久久久| 欧美精品一区二区在线播放| 久久精品综合网| 亚洲综合精品自拍| 中文在线资源观看视频网站免费不卡| 欧美jizzhd精品欧美喷水| 久久精品国产亚洲aⅴ| 亚洲一区二区三区精品在线观看| 尤物九九久久国产精品的分类|