锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久永久免费观看,欧美三级日本三级少妇99,亚洲免费高清http://www.shnenglu.com/Tongy0/category/16886.htmlNo sub titlezh-cnTue, 28 Jun 2011 17:38:45 GMTTue, 28 Jun 2011 17:38:45 GMT60Mediator妯″紡http://www.shnenglu.com/Tongy0/archive/2011/06/28/149639.htmlJacc.KimJacc.KimTue, 28 Jun 2011 02:26:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/06/28/149639.htmlhttp://www.shnenglu.com/Tongy0/comments/149639.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/06/28/149639.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/149639.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/149639.htmlMediator妯″紡
      璇ユā鍨嬩富瑕佽В鍐充袱涓垨澶氫釜瀵硅薄闂寸殑鐩鎬簰閫氫俊鐨勯棶棰樸傦紙涓漢璁や負璇ユā寮忕殑鎬濇兂鍚孫bserver妯″紡鐨勬濇兂榪樻槸鏈夌偣綾諱技鐨勩傝〃闈笂鐪嬶紝浠栦滑鎵瑙e喅鐨勯棶棰樼被鍨嬫牴鏈笉鍚岋紝閭d負浠涔堟垜浼氳繖涔堣涓轟簡錛熷悗闈㈠啀璇存槑錛夈傛寜鐞嗚錛屽悇瀵硅薄闂寸殑閫氫俊鍋囧錛歄bjA涓嶰bjB瑕佽繘琛岄氫俊銆傛柟娉曟湁濂藉縐嶃傛瘮濡傦細鍙互鍦ㄥ畠浠唴閮ㄥ悇瀛樹竴浠藉鏂圭殑寮曠敤銆傚湪涓鏂瑰彉鍔ㄦ椂錛岃皟鐢ㄥ彟涓鏂硅繘琛屽悓姝ュ嵆鍙備絾紜疄濡傛灉緋葷粺澶ц屽鏉傛椂錛岃繖灝嗘樉紺虹殑涓嶉偅涔堟竻鏅般傚洜姝わ紝灝卞笇鏈涗腑闂翠細鏈変釜璋冨仠鑰呫侻ediator妯″紡灝卞洜姝よ岀敓銆傛鏃訛紝ObjA涓嶰bjB鍐呴儴鍙瓨涓轟竴浠組ediator(MediatorObj)瀵硅薄鐨勫紩鐢ㄣ傚湪瀵硅薄鍙樺姩鏃訛紝鍙渶璋冪敤MediatorObj鐨勭浉鍏蟲帴鍙o紝閫氱煡鍏朵粬瀵硅薄闇瑕佸悓姝ユ洿鏂板嵆鍙傚洜姝わ紝瀵筄bjA鎴朞bjB鎴栧叾浠栫殑浠諱綍瀵硅薄鏉ヨ錛屽畠浠湁鍙兘鏍規湰涓嶇煡閬撹繕鏈夊叾浠栫殑瀵硅薄瀛樺湪銆傦紙濡傦細ObjA鍙兘涓嶇煡閬揙bjB鐨勫瓨鍦ㄣ傦級浣嗛氳繃MediatorObj瀵硅薄錛屽嵈杈懼埌浜哋bjA涓嶰bjB鐨勫悓姝ヤ綔鐢ㄣ傦紙鐜板湪鎯充笅錛屾槸涓嶆槸涓嶰bserver妯″紡鏈夌偣綾諱技錛熷洜涓猴紝濡傛灉鍦∣bserver妯″紡鐨勫疄鐜頒笂錛屾娊璞″嚭涓涓狪Observerable鏉ャ傞偅閫氳繃IObserverable瀵硅薄錛屽彲浠ラ氱煡鎵鏈塚iew鐨勬洿鏂幫級銆?br /> 

class CClassA;
class CClassB;

class CMediator
{
public:
    CMediator(){}
    CMediator(CClassA
* pObjA, CClassB* pObjB)
    {
        
this->m_pObjA = pObjA;
        
this->m_pObjB = pObjB;
    }
    
void DoSyncFromAToB(void)
    {
        
this->m_pObjB->xxx
    }
    
void DoSyncFromBToA(void)
    {
        
this->m_pObjA->xxx
    }
private:
    CClassA
* m_pObjA;
    CClassB
* m_pObjB;
};

class CClassA
{
public:
    CClassA(){}
    CClassA(CMediator
* pMediator)
    {
        
this->m_pMediator = pMediator;
    }
    
void DoAction(void)
    {
        
// do some work here
        
        
// 閫氱煡鍏朵粬瀵硅薄錛岄渶瑕佸悓姝?/span>
        this->m_pMediator->DoSyncFromAToB();
    }

private:
    CMediator
* m_pMediator;
};

class CClassB
{
public:
    CClassB(){}
    CClassB(CMediator
* pMediator)
    {
        
this->m_pMediator = pMediator;
    }
    
void DoAction(void)
    {
        
// do some work here
        
        
// 閫氱煡鍏朵粬瀵硅薄錛岄渶瑕佸悓姝?/span>
        this->m_pMediator->DoSyncFromBToA();
    }

private:
    CMediator
* m_pMediator;
};


Jacc.Kim 2011-06-28 10:26 鍙戣〃璇勮
]]>
Memento妯″紡http://www.shnenglu.com/Tongy0/archive/2011/06/28/149635.htmlJacc.KimJacc.KimTue, 28 Jun 2011 02:02:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/06/28/149635.htmlhttp://www.shnenglu.com/Tongy0/comments/149635.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/06/28/149635.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/149635.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/149635.htmlMemento妯″紡
      璇ユā寮忕殑鍑虹幇錛屼富瑕佹槸涓轟簡璁╃敤鎴鋒嫢鏈?#8220;鎾ら攢”鐨勬搷浣溿傚ソ緇欑敤鎴鋒湁涓仮澶嶅厛鍓嶇姸鎬佺殑鏉冨姏銆傚叾涓昏鎬濇兂灝辨槸灝嗗璞★紙鍋囪鍏剁被鍨嬩負錛欳lassA錛夌殑鍏堝墠鐘舵佽褰曡搗鏉ワ紙褰撶劧鑷繁寰楃鐞嗗ソ錛夈傚湪闇瑕佹椂錛岀敤姝ゆ仮澶嶃傛牴鎹鎬濊礬錛屽綋鐒跺疄鐜版柟娉曞氨澶氱澶氭牱銆備笅闈㈠弬鑰冭璁℃ā寮忚祫鏂欎腑鐨刢++浠g爜銆傦紙瑙夊緱姝や唬鐮佽璁¤繕鏄尯鏈夐亾鐞嗙殑銆傚洜涓哄Memento綾繪潵璇達紝闄や簡ClassA鐨勫璞″錛屽叾浠栫被鍨嬬殑瀵硅薄閮戒笉闇瑕侊紝涓斾篃涓嶅簲璇ヨ兘璁塊棶鍒般傚洜姝わ紝鍦ㄥ叿浣撳疄鐜頒笂錛屽畠鐢ㄤ簡鍙嬪厓鐨勬妧鏈級銆?
typedef std::string State;

class COperationsMemento
{
    
//鍏跺疄鏇村己鐨勶紝鍙互灝嗚綾昏璁℃垚銆傚彲浠ョ淮鎶や竴緇勭姸鎬佺殑銆傝繖鏍鳳紝灝卞彲浠ユ敮鎸?br />    //浠繪剰鎭㈠鍒板厛鍓嶇殑絎琋縐嶇姸鎬併傚氨濂戒技photoshop鐨勫眰鐨勯偅鏍風殑鎾ら攢銆?br />    //涓鴻鏄庢濇兂錛屾鏆傛椂鍙淮鎶や竴涓姸鎬併?/span>
private:
    State GetState(
void)
    {
        
return this->_sta;
    }
    
void SetState(const State& state)
    {
        
this->_sta = state;
    }
    
// some code here
private:
    State _sta;
};

class COperationSteps
{
public:
    friend 
class COperationsMemento;
    COperationSteps()
    {
        
this->m_pMemento = NULL;
        
this->_sta = "normal";
    }
    COperationSteps(COperationsMemento
* pMemento)
    {
        
this->m_pMemento = pMemento;
        
this->_sta = "normal";
    }
    
virtual ~COperationSteps()
    {
        
if (m_pMemento != NULL)
        {
            delete m_pMemento;
            m_pMemento 
= NULL;
        }
    }
    
//瀛樺偍鐘舵?鍗籌細淇濆瓨鐘舵?
    void SaveState(void)
    {
        
if (m_pMemento == NULL)
        {
            m_pMemento 
= new COperationsMemento();
        }
        m_pMemento
->SetState(this->_sta);
    }
    
//鎭㈠鐘舵?/span>
    void RestoreState(COperationsMemento* pMemento = NULL)
    {
        
if (pMemento != NULL)
        {
            
this->_sta = pMemento->GetState();
        }
        
else
        {
            
this->_sta = m_pMemento->GetState();
        }
    }

private:
    COperationsMemento
* m_pMemento;    //闇瑕佺淮鎶わ紝鍥犱負璇ョ姸鎬侊紝鏄嚜宸辯鏈夌殑
    State _sta;
};



Jacc.Kim 2011-06-28 10:02 鍙戣〃璇勮
]]>
Strategy妯″紡http://www.shnenglu.com/Tongy0/archive/2011/06/12/148525.htmlJacc.KimJacc.KimSun, 12 Jun 2011 04:13:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/06/12/148525.htmlhttp://www.shnenglu.com/Tongy0/comments/148525.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/06/12/148525.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/148525.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/148525.html 1class Strategy
 2{
 3public:
 4  //
 5  virtual void Func1(void= 0;
 6  virtual void Func2(void= 0;//榪欎袱涓帴鍙e彧鏄ず渚?br /> 7  // some other interfaces here
 8}
;
 9
10class Sub1 : Strategy
11{
12public:
13  void Func1(void)
14  {
15    // do something
16  }

17  void Func2(void)
18  {
19    // do something
20  }

21}
;
22
23class Sub2 : Strategy
24{
25public:
26  void Func1(void)
27  {
28    // do something
29  }

30  void Func2(void)
31  {
32    // do something
33  }

34}
;
35
36class Strategy;
37//絳栫暐綾葷粨鏋?/span>
38class Context
39{
40public:
41  Context(const Strategy* pStrategyObj) : m_pStrategyObj(pStrategyObj) {}
42  // 
43  // 閫昏緫鎺ュ彛DoAction
44  void DoAction(void)
45  {
46    if (NULL != m_pStragegyObj)
47    {
48      m_pStrategyObj->Func1();
49      m_pStrategyObj->Func2();
50      // 
51    }

52  }

53}
;

 

    娉ㄦ剰錛氳璁℃ā寮忎腑錛屾洿鎻愬′紭鍏堜嬌鐢ㄧ粍鍚堬紝鑰岄潪緇ф壙銆傝緇嗗師鍥狅紝涔熷彲浠ヤ粠浠ヤ笂妯″紡姣旇緝寰楀嚭銆?br />



Jacc.Kim 2011-06-12 12:13 鍙戣〃璇勮
]]>
Template妯″紡http://www.shnenglu.com/Tongy0/archive/2011/06/12/148524.htmlJacc.KimJacc.KimSun, 12 Jun 2011 03:51:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/06/12/148524.htmlhttp://www.shnenglu.com/Tongy0/comments/148524.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/06/12/148524.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/148524.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/148524.html      涓嬮潰鏄▼搴忕ず渚嬶細
 1class LogicalAbstractClass
 2{
 3public:
 4     // some code here
 5    // 閫昏緫鎺ュ彛1
 6    virtual void Logical1(= 0;
 7    // 閫昏緫鎺ュ彛2
 8    virtual bool Logical2(= 0;
 9     // some other logical interfaces
10}
;
11
12class SubClassA : public LogicalAbstractClass
13{
14public:
15    void Logical1() }
16    bool Logical2() return true/false; }
17}
;
18
19class SubClassB : public LogicalAbstractClass
20{
21public:
22    void Logical1() }
23    bool Logical2() return true/false; }
24}
;
25
26int main(int argc, char* argc[])
27{
28    LogicalAbstractClass* pA = NULL;
29    LogicalAbstractClass* pB = NULL;
30    pA = new SubClassA;
31    pB = new SubClassB;
32    
33    delete pB;
34    delete pA;
35}

      琛ュ厖錛欴elphi鐨刢ode紺轟緥灝變笉緇欎簡銆備竴涓亾鐞嗐傛噦寰楁濇兂錛屾墍鏈夎璦閫氱敤銆?img src ="http://www.shnenglu.com/Tongy0/aggbug/148524.html" width = "1" height = "1" />

Jacc.Kim 2011-06-12 11:51 鍙戣〃璇勮
]]>
Adapter妯″紡http://www.shnenglu.com/Tongy0/archive/2011/05/21/146892.htmlJacc.KimJacc.KimSat, 21 May 2011 15:54:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/21/146892.htmlhttp://www.shnenglu.com/Tongy0/comments/146892.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/21/146892.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146892.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146892.html 璇ユā寮忎篃鐩稿綆鍗曘傚叾涓昏澶勭悊鐨勬槸榪欑被闂錛氬綋緋葷粺鎴栨煇浜涙ā鍧楀凡緇忔垚褰㈠悗錛岀獊鐒墮渶瑕佸鍔犳煇浜涘姛鑳姐傝岃繖浜涘姛鑳界殑澧炲姞
鍦ㄧ幇鏈夌殑瀵硅薄涓紝鏆傛椂娌℃湁鍔炴硶澶勭悊銆傚悓鏃訛紝鍗村彂鐜幫紝璇ュ姛鑳斤紝鍏跺疄鍙︿竴妯″潡鐨勫璞″嵈鍙互澶勭悊鐨勪簡銆傚洜姝わ紝灝卞笇鏈涜兘澶熷湪涓嶄慨鏀瑰師
鏈夋搷浣滃強緋葷粺緇撴瀯鐨勬儏鍐典笅錛屽氨鑷劧鑰岀劧鍦板皢璇ュ姛鑳藉疄鐜板嚭鏉ャ傛鏃訛紝灝卞彲浠ヤ嬌鐢ˋdapter鏉ュ鐞嗕箣銆傦紙娉細鍦ㄦ錛屾垜浠己璋冪殑鏄笉
鍘諱慨鏀瑰師鏈夌郴緇熺殑緇撴瀯鐨勬儏鍐典笅錛夈?br /> 灝變笂榪伴棶棰橈紝Adapter妯″紡鏈変袱縐嶈В鍐蟲柟娉曘備竴縐嶆槸閫氳繃瀵硅薄閫傞厤鏉ヨВ鍐熾傚彟涓縐嶆槸閫氳繃綾婚傞厤鏉ヨВ鍐熾傛墍璋撶殑瀵硅薄閫傞厤錛屾寚
鐨勬槸錛岄氳繃寮曞叆鍏鋒湁鎴戜滑闇瑕佸姛鑳芥帴鍙g殑瀵硅薄錛堣綾諱負X錛夛紝鍦ㄥ疄鐜板鐞嗚繃紼嬩腑錛屾垜浠嬌鐢ㄧ殑鏄疿鐨勫姛鑳芥帴鍙o紝浠ユ鏉ヨ揪鍒版垜浠殑闇姹傘?br />鑰岀被閫傞厤錛屽垯鎸囩殑鏄紝浜х敓涓涓柊綾伙紝璁╄鏂扮被錛岀戶鎵胯嚜X綾伙紝鍒欒嚜鐒訛紝璇ユ柊綾誨氨浼氭湁浜哫鐨勭浉鍏蟲帴鍙c備笅闈㈢湅涓嬶紝榪欎袱縐嶉傞厤鐨勪唬鐮併?/p>

瀵硅薄閫傞厤
class X
{
public:
 ...
 virtual func(...);
};

class ObjAdapterObject : public ...
{
public:
 void func(...)
 {
  if (m_pXObj != NULL)
   m_pXObj->func(...);
 }
private:
 X* m_pXObj;
};

綾婚傞厤
class X鐨勫0鏄庡強瀹氫箟鍚屼笂銆?/p>

class ClassAdapterObject: public X, public  ...
{
public:
 ...
};

浠ヤ笅璋冪敤灝變笉鍐欎簡錛屼綘鎳傚緱鐨勩?/p>

Jacc.Kim 2011-05-21 23:54 鍙戣〃璇勮
]]>
Facade妯″紡http://www.shnenglu.com/Tongy0/archive/2011/05/20/146785.htmlJacc.KimJacc.KimThu, 19 May 2011 16:39:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146785.htmlhttp://www.shnenglu.com/Tongy0/comments/146785.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146785.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146785.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146785.htmlFacade妯″紡

 錛團acade妯″紡錛夐棬闈㈡ā寮忎笌Proxy妯″紡鍏跺疄榪樻槸鏈夌偣鐩鎬技鐨勩備篃鏄富瑕佸疄鐜頒竴縐嶅姛鑳界殑灝佽銆侳acade妯″紡錛屼富瑕佹槸灝嗗嚑涓湁鐩稿叧鎬х殑鍔熻兘鎿嶄綔錛屽皝瑁呭埌涓璧鳳紝鐢辯粺涓鐨勬帴鍙f彁渚涖?br />浣跨敤鏃訛紝閫氳繃璇ユ帴鍙e嵆鍙畬鎴愭墍鏈夌浉鍏崇殑鍔熻兘銆傛鏈変釜濂藉錛屽氨鏄彁楂樿В鑰︽т笌澧炲姞楂樿仛鎬с傚疄鐜頒腑錛屾煡澶勯棶棰樹篃鐩稿鏂逛究銆?br /> 綆鍗曪紝浠g爜涓嶅氨緇欎簡銆?/p>

Jacc.Kim 2011-05-20 00:39 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬪叓http://www.shnenglu.com/Tongy0/archive/2011/05/20/146783.htmlJacc.KimJacc.KimThu, 19 May 2011 16:38:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146783.htmlhttp://www.shnenglu.com/Tongy0/comments/146783.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146783.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146783.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146783.html 

鍗侊細Flyweight妯″紡錛堝嵆錛氫韓鍏冩ā寮忥級

 璇寸殑鐩磋鐐癸紝Flyweight妯″紡鍏跺疄灝辨槸瀹炵幇涓涓璞$紦瀛樻睜銆傚彇瀵硅薄錛屼紭鍏堜粠璇ユ睜涓彇鍑恒傝屽畠浠殑鍖哄埆鍦ㄤ簬錛氫粠鍓嶈呬腑鍙栦笢瑗挎椂錛屽鏋滀笉瀛樺湪銆傚垯鍙互鏂頒駭鐢熶竴涓紝騫惰繑鍥炪?br />鑰屼粠鍚庤呬腑鍙栨椂錛屽瓨鍦ㄥ氨榪斿洖錛屼笉瀛樺湪錛屽氨榪斿洖涓虹┖銆?br /> 鐢變笂闈㈢殑瑙i噴錛屼笉闅炬兂璞★紝璇ユā寮忕殑瀹炵幇錛?br />class Flyweight
{
public:
 ...
};

class SubFlyweightObjX : public Flyweight
{
...
};

class SubFlyweightObjY : public Flyweight
{
...
};

//Flyweight綾葷殑緇撴瀯
class FlyweightBuffFactory
{
public:
 Flyweight* GetFlyweight(...condition...)
 {
  for (vector<Flyweight* >::iterator iter = m_vBuffer.begin(); iter != m_vBuffer.end(); iter++)
  {
   if (iter.xxx = condition)
    return (Flyweight*)iter;//娉細濡傛灉姝ゅ彞涓嶈鐢ㄨ繖鍙ワ細return (Flyweight*)(&(*iter));
  }
  Flyweight* pReturn = new xxx;
  m_vBuffer.push_back(pReturn);
  return pReturn;
 }

private:
 vector<Flyweight* > m_vBuffer;
};



Jacc.Kim 2011-05-20 00:38 鍙戣〃璇勮
]]>
Proxy妯″紡http://www.shnenglu.com/Tongy0/archive/2011/05/20/146784.htmlJacc.KimJacc.KimThu, 19 May 2011 16:38:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146784.htmlhttp://www.shnenglu.com/Tongy0/comments/146784.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146784.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146784.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146784.htmlProxy妯″紡

 浠g悊妯″紡鍏訛紝鎬濇兂鍊掔被浼間簬灝佽鐨勬蹇點備富瑕佹槸灝嗘煇鍔熻兘鎿嶄綔閫氳繃鍙︿竴瀵硅薄錛屾潵鍏ㄦ潈澶勭悊銆傚
琚唬鐞嗙殑瀵硅薄錛屽畠涓嶇浣犳槸濡備綍澶勭悊銆傚畠鍙緇撴灉銆傛瘮濡傦細瀵規暟鎹殑鎻愬彇銆傚師鏈彲鑳借緇忚繃N涓璞″叡
鍚岄厤鍚堬紝鏈緇堝彇寰楁暟鎹傛鏃訛紝鍙互鐢ㄤ竴涓唬鐞嗗璞★紝鏉ュ叏鏉冨鐞嗕箣銆傚張姣斿璇達細鎴戜滑涓婄綉錛屾墦寮緗戦〉錛?br />鍙互閫氳繃windows鐨勭綉緇滃姛鑳芥ā鍧楋紝鍘昏В鏋愶紝騫舵渶緇堟墦寮緗戦〉銆傚悓鏃朵篃鍙互閫氳繃浠g悊錛岃В鏋愬茍鏈緇堟墦寮緗?br />欏點?/p>

 涓嬮潰鏄弬鑰冧唬鐮?br />class Subject
{
public:
 virtual void Request() = 0;
protected:
 Subject(){}
};

class ImplSubject
{
public:
 virtual void Request(){ //....}
};

class Proxy
{
public:
 Proxy(){}
 Proxy(Subject* sub){m_pSub = sub;}
private:
 Subject* m_pSub;
 void Request(){ m_pSub->Request();}
};

int main(int argc, char* argv[])
{
 Subject* sub = new ImplSubject();
 Proxy* p = new Proxy(sub);
 p->Request();
 return 0;
}



Jacc.Kim 2011-05-20 00:38 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬩竷http://www.shnenglu.com/Tongy0/archive/2011/05/20/146782.htmlJacc.KimJacc.KimThu, 19 May 2011 16:35:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146782.htmlhttp://www.shnenglu.com/Tongy0/comments/146782.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/20/146782.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146782.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146782.html涔濓細Decorator妯″紡錛堝嵆錛氳楗版ā寮忥級

 (娉?)鍋囪鏈夎繖鏍風殑涓涓棶棰樺瓨鍦紙鍏跺疄鐜板疄寮鍙戜腑錛岄潪甯哥粡甯擱亣鍒幫級錛氬熀綾籅asicClassX鏈塏涓殑媧劇敓綾匯傚洜涓哄畠浠病鏈夊姛鑳芥帴鍙oid UnknowFunction(void);
鎸夋甯哥殑銆傛垜浠殑澶勭悊鏂規硶錛岋紙1錛?鍙互閫氳繃鐩存帴淇敼BasicClassX鍩虹被錛屽湪姝ゆ坊鍔爒irtual void UnknowFunction(void);铏氭帴鍙e茍瀹炵幇錛岀劧鍚庢墍鏈塪erived
class涓潎鍙銆傦紙2錛?鍙堟垨鏄湪BasicClassX鍩虹被錛屾坊鍔犱簡綰櫄鎺ュ彛錛岀劧鍚庡湪鍏蜂綋鏌愭淳鐢熺被涓繘琛屼簡瀹炵幇銆傚湪瀹炵幇浣跨敤涓紝鐢ㄨderived class鏉ュ鐞嗐?br /> (娉?)浣嗚繖鏍峰仛浼氭湁榪欐牱鐨勯棶棰樺瓨鍦細a) 浼氭湁鍙兘璁╃戶鎵跨殑娣卞害錛屽彉鐨勫緢娣便傜郴緇熺殑綾誨皢鍙樼殑寰堝錛屽緢澶嶆潅銆俠) 綾葷殑緇撴瀯涔熷皢鍙樼殑澶嶆潅鍖栥傦紙鍥犱負鐜?br />鍦ㄦ槸澧炲姞涓帴鍙o紝浠ュ悗瑕佹槸鍙堟湁鍏朵粬鐨勬帴鍙e姛鑳介渶瑕佹坊鍔犱簡錛燂紵錛燂級 c) 鏃犲艦涓紝浼氬姞閲嶅熀綾葷殑璐熸媴銆傚洜涓哄繀欏誨緱淇濊瘉鎵╁睍璇ユ帴鍙o紝鍚﹀垯鍩虹被鐪嬩笉鍒拌鎺?br />鍙c?br /> (娉?)涓轟簡瑙e喅涓婇潰鐨勯棶棰樸侱ecorator妯″紡灝卞彲浠ュ府鍔╂垜浠緢杞繪澗鍦拌В鍐熾傛垜浠疄鐜頒竴涓狣ecorator綾匯傝綾伙紝鍙寮曠敤涓涓狟asicClassX鎸囬拡瀵硅薄鍗沖彲銆?br />鐒跺悗鍦―ecorator綾諱腑錛屾墿灞曞姛鑳芥帴鍙o紝榪欐牱錛屾柊鎵╁睍鐨勫姛鑳藉氨涓嶣asicClassX鐨勭浉鍏崇被錛屾棤浠諱綍鍏崇郴銆傚彧鏄湪BasicClassX鐩稿叧綾婚渶瑕佽鎵╁睍鎺ュ彛鐨勫湴鏂癸紝
浣跨敤Decorator綾繪潵澶勭悊鍗沖彲銆傚氨鐩稿綋浜嶣asicClassX鐨勫璞★紙鎴栨槸瀹冪殑derived class object錛夊鎵楧ecorator鏉ュ疄鐜板鐞嗕竴鏍楓備絾鍙堝悓鏃跺儚鏄皢BasicClassX
瀵硅薄涓嶥ecorator瀵硅薄榪涜緇勫悎鍦ㄤ竴璧蜂嬌鐢ㄣ備粠鑰岃揪鍒版柊鎺ュ彛鐨勬墿灞曚綔鐢ㄣ侱ecorator妯″紡灝辨槸榪欎箞鍥炰簨銆?br /> 涓嬮潰綆瑕佹彁鐐間笅Decorator綾葷殑璁捐
 SubClassA : BasicClassX;
 SubClassB : BasicClassX;
 SubClassC : SubClassA;
 ...
 SubClassN : ... : BasicClassX;

 class Decorator : BasicClassX
 {
 public:
  Decorator(BasicClassX* pBObj){m_pBOjb = pBObj;}
  void DoOperate(void)
  {
   m_pBObj->DoOperator();
   // do new interface
   this->DoNewInterfaceFunction();
  }
  //new extened interface function
  void DoNewInterfaceFunction(void){//do something...}
  // new extened other interface function
  ...
  
  //write down other code in here you knowned.
  ...
 private:
  BasicClassX* m_pBObj;
 }
 涓漢璁や負錛孌ecorator妯″紡錛屼綘璇村畠鏈夌敤銆傚畠紜疄鏈夌敤銆傝瀹冩病鐢ㄣ傚叾瀹炲畠涔熸病鐢ㄣ備負鍟ヨ繖鏍瘋浜嗭紵鍥犱負瀹冨畬鍏ㄥ彲浠ラ氳繃錛岀戶鎵匡紝鎴栬呯洿鎺ヤ慨鏀瑰師鏈夌殑綾諱綋緋繪潵
瀹炵幇銆備絾瀹冪殑瀛樺湪錛屼篃紜疄浼氳緋葷粺鐨勬濊礬娓呮櫚浜涖傝嚦灝戜唬鐮佺浉瀵逛笉浼氶偅涔堜貢銆?/p>

Jacc.Kim 2011-05-20 00:35 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬪叚http://www.shnenglu.com/Tongy0/archive/2011/05/18/146609.htmlJacc.KimJacc.KimTue, 17 May 2011 16:46:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/18/146609.htmlhttp://www.shnenglu.com/Tongy0/comments/146609.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/18/146609.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146609.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146609.html璁捐妯″紡瀛︿範鎬葷粨涔嬪叚

鍏細Composite妯″紡錛堝嵆錛氬鍚堟ā寮忥級

 澶嶅悎妯″紡鏃ㄥ湪灝嗛掑綊澶勭悊錛岃漿鍖栦負涓縐嶉『搴忓鐞嗐傛槑鏄懼湴錛岄掑綊澶勭悊錛岀浉瀵硅緝鑰楄祫婧愩備篃鐩稿杈冧負鎶借薄浜涖傝岀敤涓涓狢omposite綾誨璞℃潵杞寲澶勭悊
閫掑綊澶勭悊銆傚皢鏄懼緱鐩磋浜涖傚畠涓嶥ecorator妯″紡鐨勫尯鍒槸錛欳omposite妯″紡錛屾棬鍦ㄦ瀯閫犱竴涓被銆傝繖涓被錛屽皢鍘熸湰鏄掑綊緇勭粐鐨勬爲鐘剁粨鏋勶紝杞崲涓虹洿瑙傚湴杞寲涓?br />欏哄簭緇撴瀯銆傚嵆錛氬畠閲嶈浜庤漿鍖栬〃鐜般傝孌ecorator妯″紡錛堝嵆錛氫慨楗版ā寮忥級錛屽叾閲嶈綆鍖栫鐞嗗師鏈郴緇熺被浣撶郴緇撴瀯銆備笉鑷充簬灝嗙被緇ф壙浣撶郴瓚婃潵瓚婃繁銆傚悓鏃訛紝涓?br />鑷充簬璁╁師鏈璁″ソ鐨勭被錛岃秺鏉ヨ秺澶嶆潅鍖栥傚悓鏃跺張鍙互涓哄師鏈被浣撶郴娣誨姞鏂扮殑鍔熻兘錛堝嵆錛氫功涓婃墍榪扮殑鏂扮殑鑱岃矗錛夈?/p>

 涓嬮潰綆瑕佺湅涓嬭妯″紡鐨勪唬鐮佺粨鏋勶細

class ClassNode
{
public:
 //鍐欎笅鏋勯犲嚱鏁扮瓑
 ...
public:
 virtual void Operation(void);
 virtual void Add(ClassNode* pNode);
 virtual void Remove(ClassNode* pNode);
 virtual ClassNode* GetNode(int iIndex);
}

//Composite綾?br />class Composite : public ClassNode
{
public:
 typedef vector<ClassNode* > NODELISTVEC;
public:
 void Operation(void)
 {
  for (NODELISTVEC::iterator iter = m_vNodeList.begin(); iter != m_vNodeList.end(); iter++)
   iter->Operation();
 }
 void Add(ClassNode* pNode){//do something...}
 void Remove(ClassNode* pNode){//do something...}
 ClassNode* GetNode(int iIndex){//do something...}
private:
 NODELISTVEC m_vNodeList;
}

//璋冪敤
int main(int argc, char* argv[])
{
 Composite* MyCompositeForNodes = new ...;
 ClassNode* xxx = new ...;//鍒涘緩鑺傜偣銆傚綋鐒惰繖閲屽彧鏄負浜嗘紨紺猴紝鎵浠ュ彧鍒涘緩涓涓妭鐐廣備竴媯墊爲鏈夊彲鑳芥湁N涓妭鐐廣?br /> MyCom,positeForNodes.Add(xxx );
 ...
 MyCompositeForNodes.Operation();
}

//涓漢璁や負錛岃妯″紡錛屽緢鎬晩銆傘傚洜涓洪氳繃榪欐牱杞崲鍚庯紝鍘熸湰鐨勭埗瀛愬叧緋誨氨琚牬鍧忔帀浜嗐?br />//濡傛灉鏈夊ぇ渚犵悊瑙g殑娣辯殑璇濓紝錛岃繕璇蜂笉鍚濊ˉ鍏呬笅銆傘備笉鐩涙劅嬋銆?/p>

Jacc.Kim 2011-05-18 00:46 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬩簲http://www.shnenglu.com/Tongy0/archive/2011/05/17/146532.htmlJacc.KimJacc.KimMon, 16 May 2011 17:16:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/17/146532.htmlhttp://www.shnenglu.com/Tongy0/comments/146532.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/17/146532.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146532.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146532.html璁捐妯″紡瀛︿範鎬葷粨涔嬩簲

涓冿細Decorator妯″紡錛堝嵆錛氳楗版ā寮忥級

 (娉?)鍋囪鏈夎繖鏍風殑涓涓棶棰樺瓨鍦紙鍏跺疄鐜板疄寮鍙戜腑錛岄潪甯哥粡甯擱亣鍒幫級錛氬熀綾籅asicClassX鏈塏涓殑媧劇敓綾匯傚洜涓哄畠浠病鏈夊姛鑳芥帴鍙oid UnknowFunction(void);
鎸夋甯哥殑銆傛垜浠殑澶勭悊鏂規硶錛岋紙1錛?鍙互閫氳繃鐩存帴淇敼BasicClassX鍩虹被錛屽湪姝ゆ坊鍔爒irtual void UnknowFunction(void);铏氭帴鍙e茍瀹炵幇錛岀劧鍚庢墍鏈塪erived
class涓潎鍙銆傦紙2錛?鍙堟垨鏄湪BasicClassX鍩虹被錛屾坊鍔犱簡綰櫄鎺ュ彛錛岀劧鍚庡湪鍏蜂綋鏌愭淳鐢熺被涓繘琛屼簡瀹炵幇銆傚湪瀹炵幇浣跨敤涓紝鐢ㄨderived class鏉ュ鐞嗐?br /> (娉?)浣嗚繖鏍峰仛浼氭湁榪欐牱鐨勯棶棰樺瓨鍦細a) 浼氭湁鍙兘璁╃戶鎵跨殑娣卞害錛屽彉鐨勫緢娣便傜郴緇熺殑綾誨皢鍙樼殑寰堝錛屽緢澶嶆潅銆俠) 綾葷殑緇撴瀯涔熷皢鍙樼殑澶嶆潅鍖栥傦紙鍥犱負鐜?br />鍦ㄦ槸澧炲姞涓帴鍙o紝浠ュ悗瑕佹槸鍙堟湁鍏朵粬鐨勬帴鍙e姛鑳介渶瑕佹坊鍔犱簡錛燂紵錛燂級 c) 鏃犲艦涓紝浼氬姞閲嶅熀綾葷殑璐熸媴銆傚洜涓哄繀欏誨緱淇濊瘉鎵╁睍璇ユ帴鍙o紝鍚﹀垯鍩虹被鐪嬩笉鍒拌鎺?br />鍙c?br /> (娉?)涓轟簡瑙e喅涓婇潰鐨勯棶棰樸侱ecorator妯″紡灝卞彲浠ュ府鍔╂垜浠緢杞繪澗鍦拌В鍐熾傛垜浠疄鐜頒竴涓狣ecorator綾匯傝綾伙紝鍙寮曠敤涓涓狟asicClassX鎸囬拡瀵硅薄鍗沖彲銆?br />鐒跺悗鍦―ecorator綾諱腑錛屾墿灞曞姛鑳芥帴鍙o紝榪欐牱錛屾柊鎵╁睍鐨勫姛鑳藉氨涓嶣asicClassX鐨勭浉鍏崇被錛屾棤浠諱綍鍏崇郴銆傚彧鏄湪BasicClassX鐩稿叧綾婚渶瑕佽鎵╁睍鎺ュ彛鐨勫湴鏂癸紝
浣跨敤Decorator綾繪潵澶勭悊鍗沖彲銆傚氨鐩稿綋浜嶣asicClassX鐨勫璞★紙鎴栨槸瀹冪殑derived class object錛夊鎵楧ecorator鏉ュ疄鐜板鐞嗕竴鏍楓備絾鍙堝悓鏃跺儚鏄皢BasicClassX
瀵硅薄涓嶥ecorator瀵硅薄榪涜緇勫悎鍦ㄤ竴璧蜂嬌鐢ㄣ備粠鑰岃揪鍒版柊鎺ュ彛鐨勬墿灞曚綔鐢ㄣ侱ecorator妯″紡灝辨槸榪欎箞鍥炰簨銆?br /> 涓嬮潰綆瑕佹彁鐐間笅Decorator綾葷殑璁捐
 SubClassA : BasicClassX;
 SubClassB : BasicClassX;
 SubClassC : SubClassA;
 ...
 SubClassN : ... : BasicClassX;

 class Decorator : BasicClassX
 {
 public:
  Decorator(BasicClassX* pBObj){m_pBOjb = pBObj;}
  void DoOperate(void)
  {
   m_pBObj->DoOperator();
   // do new interface
   this->DoNewInterfaceFunction();
  }
  //new extened interface function
  void DoNewInterfaceFunction(void){//do something...}
  // new extened other interface function
  ...
  
  //write down other code in here you knowned.
  ...
 private:
  BasicClassX* m_pBObj;
 }
 涓漢璁や負錛孌ecorator妯″紡錛屼綘璇村畠鏈夌敤銆傚畠紜疄鏈夌敤銆傝瀹冩病鐢ㄣ傚叾瀹炲畠涔熸病鐢ㄣ備負鍟ヨ繖鏍瘋浜嗭紵鍥犱負瀹冨畬鍏ㄥ彲浠ラ氳繃錛岀戶鎵匡紝鎴栬呯洿鎺ヤ慨鏀瑰師鏈夌殑綾諱綋緋繪潵
瀹炵幇銆備絾瀹冪殑瀛樺湪錛屼篃紜疄浼氳緋葷粺鐨勬濊礬娓呮櫚浜涖傝嚦灝戜唬鐮佺浉瀵逛笉浼氶偅涔堜貢銆?/p>

Jacc.Kim 2011-05-17 01:16 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬪洓http://www.shnenglu.com/Tongy0/archive/2011/05/16/146440.htmlJacc.KimJacc.KimSun, 15 May 2011 16:42:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/16/146440.htmlhttp://www.shnenglu.com/Tongy0/comments/146440.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/16/146440.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146440.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146440.html璁捐妯″紡瀛︿範鎬葷粨涔嬪洓

鍏細Bridge妯″紡錛堝嵆錛氭ˉ鎺ユā寮忥級

 璁蹭箣鍓嶏紝鍏堝0鏄庯細鐢變簬鏈漢鐢佃剳涓嶆槸寰堝ソ錛屾病娉曡涓妚c鐜榪愯銆傚洜姝や互涓嬩唬鐮侊紝浠呮槸鎵嬪伐杈撳叆錛屽湪鐜涓湭蹇呰兘緙栬瘧閫氳繃銆?br>浣嗕互涓嬶紝浠呬粎鍙槸浠嬬粛涓縐嶆濇兂銆備粎渚涘弬鑰冦傚悓鏃訛紝濡傛灉璇存槑鏈夎涔嬪錛屾榪庢寚姝c傚彟澶栵紝鍒欎簬涓嬈℃ф墜宸ヨ緭鍏ヤ笅闈㈤偅涔堝涓滀笢錛岀‘瀹?br>涓嶅鏄擄紝鎵浠elphi鐨勫叿浣撳疄鐜般傚氨涓嶅湪姝ゅ垪鍑恒傚鏈夊叴瓚g敤Delphi瀹炵幇鐨勬湅鍙嬶紝涔熷彲浠ユ壘鏈漢浜ゆ祦錛屾湰浜虹洓鎰熻崳騫搞?br>錛堝綋鐒跺鏋滄槸C++鐨勬湅鍙嬩篃鍚屾牱銆佺敋鑷蟲洿鍔犳榪庯級

 鐪嬩簡榪欎箞澶氭鐨勬ˉ鎺ユā寮忥紝榪欐鎬葷畻鏄庣櫧浜嗐傝鎯崇悊瑙fˉ鎺ユā寮忥紝涓漢璁や負錛岃繕鏄湁蹇呰鍚屾娊璞″強鍏跺疄鐜拌繘琛屼竴涓嬫瘮杈冦?br> 1) 鎶借薄鍙婂疄鐜般傛垜鐩鎬俊錛岃窡涓嶅悓鐨勪漢璇磋瘽錛岄兘浼氭湁璇紿嶅湪閲屽ご銆傚悓鏄痗oder錛岀浉淇★紝鏈榛樺鐨勬矡閫氾紝榪樻槸code鍚с傛垜浠潵鐪嬩笅鎶借薄鍙婂叾瀹炵幇鐨勪唬鐮併?br>//鎶借薄鍩虹被澹版槑
class AbstractClassX
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) = 0;
 //xxx
}

//AbstractClassX鐨勫叿浣撳疄鐜?ClassXImplX1
class ClassXImplX1 : public AbstractClassX
{
....
public:
 void DoSomething(void){ // do something with method 1... }
}

//AbstractClassX鐨勫叿浣撳疄鐜?ClassXImplX2
class ClassXImplX2 : public AbstractClassX
{
....
public:
 void DoSomething(void){ // do something with method 2... }
}

 鍦ㄥ疄闄呭簲鐢ㄤ腑錛屾垜浠敤鐨勬槸鎶借薄綾匯傝屽疄闄呬笂瀹炰緥鍖栫殑錛屽嵈鏄煇鍏蜂綋瀛愮被銆傝繖縐嶅疄鐜拌鎴戜滑澶氭暟浜烘墍浣跨敤銆傝屽畠瀹為檯涓婅В鍐崇殑鍙槸榪欎箞涓綾婚棶棰橈紝鍗籌細鍚屼竴琛屼負鐨勪笉鍚岃〃鐜般傚綋
鐒跺ぇ澶氭暟闇姹傦紝鐢ㄦ灝卞彲浠ヤ簡銆?br> 浣嗙幇鍦ㄥ亣濡傝鏈夎繖涔堜竴縐嶆儏鍐碉細鍋囧璇達紝涓婇潰鐨勫鐞嗕粎浠呭彧閫傜敤浜庡鉤鍙癆錛岃岀敤鎴峰嵈甯屾湜鍚屾椂錛屽畠涔熻鑳藉鍦ㄥ鉤鍙癇涓婁篃鑳藉涓鏍風殑鎿嶄綔銆傞偅褰撳浣曪紵
寰堟槑鏄劇殑錛屾縐嶉渶瑕侊紝騫朵笉鏄涓轟笂鐨勯渶姹傦紝鍥犱負涓嶈鏄湪騫沖彴A涓婅繕鏄鉤鍙癇涓婏紝閮借鎵ц鐩稿悓鐨勬搷浣溿傝屼笖琛ㄧず涔熸槸涓鏍風殑銆傝闇瑕佺殑瀹炵幇銆傚疄闄呬笂鏄渶瑕佹垜浠噸鏂板皝瑁呬釜鎶借薄灞傦紝
鏉ヤ笓闂ㄥ鐞嗗鉤鍙癇涓婄殑璇ヨ涓恒傝屽疄闄呯殑瀹炵幇錛屽嵈榪樻槸璺熷鉤鍙癆涓婄殑涓鏍楓傚叾瀹炴垜浠粩緇嗕竴鎯熾傚叾瀹炲鉤鍙癆浜嗙殑鎶借薄錛堝嵆錛欰bstractClassX錛変笌騫沖彴B涓婄殑鎶借薄錛堝亣濡備負錛欰bstractClassY錛夛紝
鍏跺疄瀹冧滑鏄被浼肩殑銆傚洜涓洪渶瑕佸鐞嗙殑鍔熻兘涓鏍楓傚洜姝わ紝鎴戜滑灝辨兂錛屽鏋滃皢榪欑鎶借薄涓庡疄鐜板叿浣撳垎紱誨紑鏉ャ傚湪鎶借薄涓紝鐣欎釜鍏蜂綋瀹炵幇鐨勬娊璞″紩鐢紙姝ゅ叾瀹炲氨鏄妯″紡鎵鎸囩殑Bridge----鍗籌細妗?br>閫氳繃璇ユˉ錛屽皢鎶借薄涓庡叿浣撶殑瀹炵幇榪炴帴璧鋒潵銆傚洜姝わ紝鎴戞兂璇ユā寮忕殑鍚嶇О灝辨槸鍥犳寰楁潵鐨勫惂錛夈傞偅鏍楓傛娊璞″彲浠ヤ笉鍙楅檺鍒剁殑鎵╁睍錛屽疄鐜頒篃鍚屾牱鍙互涓嶅彈闄愬埗鐨勬墿灞曘傝繖鏍鳳紝緋葷粺鐨勬鏋跺氨涓嶉渶瑕?br>鏇存敼錛屽叾涓嶅鍝夛紵錛佸洜姝ゅ氨鏈変簡濡備笅鐨刢ode

//******************************************************************
//* 鎶借薄澹版槑鍙婃娊璞¢儴鍒嗙殑瀹炵幇
//******************************************************************
//鎶借薄鐨勬娊璞″熀綾誨0鏄?br>class AbstractClass
{
private:
 //xxx
protected:
 AbstractImpl* m_pAIObj; //鍏蜂綋鐨勬娊璞″疄鐜扮殑鎶借薄瀵硅薄錛堣繖璇濆緢ao鍙o紝浣嗙悊瑙d簡榪欒瘽錛屼篃灝辯悊瑙d簡璇ユā寮忋傚彲浠ュぇ璦涓嶆儹鍦拌錛岃妯″紡鐨勭瀵嗗氨鍦ㄨ繖鍙ヨ瘽涓婏級
 //xxx
public:
 //xxx
 void DoSomething(void) = 0;
 //xxx
}

//騫沖彴A涓婄殑鎶借薄鐨勫叿浣撳疄鐜?娉ㄦ剰錛氭瀹炵幇瀛愮被錛屾槸閽堝鎶借薄鐨?
class AbstractClassA : public AbstractClass
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) { m_pAIObj.DoSomething(); }
 //xxx
}

//騫沖彴B涓婄殑鎶借薄鐨勫叿浣撳疄鐜?娉ㄦ剰錛氭瀹炵幇瀛愮被錛屾槸閽堝鎶借薄鐨?
class AbstractClassB : public AbstractClass
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) { m_pAIObj.DoSomething(); }
 //xxx
}

//******************************************************************
//* 瀹炵幇鐨勬娊璞″0鏄庡強鍏跺疄鐜?br>//******************************************************************
//瀹炵幇閮ㄥ垎鐨勬娊璞″熀綾誨0鏄?br>class AbstractImplClass
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) = 0;
 //xxx
}

//鍏蜂綋綆楁硶1鐨勫叿浣撳疄鐜?br>class ImplX : public AbstractImplClass
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) { // do something... }
 //xxx
}

//鍏蜂綋綆楁硶1鐨勫叿浣撳疄鐜?br>class ImplY : public AbstractImplClass
{
private:
 //xxx
protected:
 //xxx
public:
 //xxx
 void DoSomething(void) { // do something... }
 //xxx
}

//******************************************************************
//* 瀹為檯搴旂敤鏂歸潰
//******************************************************************

int main(int argc, char* argv[])
{
 AbstractImplClass* pImplObj = new ImplX();//鎴杗ew ImplY();絳夌瓑銆?br> //涓嬮潰娉ㄦ剰涓嬶細鍥犱負涓婇潰鐨勪唬鐮佷腑錛屾湰浜轟負浜嗙畝鍐欙紝騫舵病鏈夋槑紜啓鍑烘娊璞¢儴鍒嗙殑鍏蜂綋鏋勯犲嚱鏁般?br> //鐩鎬俊錛屾槸紼嬪簭鍛橈紝鐪嬪畬涓嬮潰榪欒閮芥噦寰楋紝涓婇潰鐨勬娊璞¢儴鍒嗙殑澹版槑錛屽簲璇ュ0鏄庝竴涓粈涔堟牱鐨?br> //鏋勯犲嚱鏁板惂銆?br> AbstractClass* pAbstractObj = new AbstractClassA(pImplObj);//鎴杗ew AbstractClassB(pImplObj);絳夌瓑銆?/p>

 //do other something...

 //鍦ㄦ琛ュ厖涓鐐癸細鏈変笂闈㈢殑璁捐錛岀郴緇熺殑妗嗘灦灝嗛兘鏃犻渶淇敼銆備笉璁烘槸瀹炵幇鐨勫叿浣撶畻娉曟敼鍙樹簡錛岃繕鏄?br> //鎶借薄鐨勯渶姹傚彉鍔ㄣ傜▼搴忛兘鏃犻渶瑕佷慨鏀規鏋朵唬鐮侊紝錛屼粎浠呭彧闇瑕佸啓涓叿浣撶殑瀹炵幇綾伙紙涓嶇鏄疄鐜扮殑瀹炵幇綾伙紝榪樻槸
 //鎶借薄鐨勫疄鐜扮被錛夊嵆鍙傝繖灝辨槸妗ユ帴妯″紡銆?br>}



Jacc.Kim 2011-05-16 00:42 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬩笁http://www.shnenglu.com/Tongy0/archive/2011/05/15/146415.htmlJacc.KimJacc.KimSun, 15 May 2011 07:48:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146415.htmlhttp://www.shnenglu.com/Tongy0/comments/146415.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146415.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146415.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146415.html璁捐妯″紡瀛︿範鎬葷粨涔嬩笁

浜旓細Prototype妯″紡錛堝嵆錛氬師鍨嬫ā寮忥級

 姝ゆā寮忓叾瀹炲緢綆鍗曪紝涓昏灝辨槸閫氳繃“鍏嬮殕”鐨勬妧鏈紝鏉ヤ駭鐢熷嚭鏂扮殑瀵硅薄鏉ャ傚叾涓庢娊璞″伐鍘傛ā寮忎互鍙夿uilder妯″紡鐨勫尯鍒槸錛氭娊璞″伐鍘傛ā寮忓紡錛屼富瑕佺敤鏉ヤ駭鐢熷涓湁鐩鎬簰渚濊禆鍏崇郴鐨勫璞$殑鍒涘緩銆?br>鑰屾瀯寤烘ā寮忓垯涓昏鐢ㄦ潵澶勭悊涓涓鏉傛ā鍧楃殑涓姝ユ鏋勫緩宸ヤ綔銆傚師鍨嬫ā寮忥紝鍒欐敞閲嶉氳繃鑷韓錛屾潵澶嶅埗鍑轟竴浠戒笌鑷韓涓鏍風殑瀹炰緥瀵硅薄鏉ャ傚師鍨嬫湰韜篃鏈夌偣綾諱技涓涓娊璞″伐鍘傘?br> 鍘熷瀷妯″紡甯哥敤鐨勬帴鍙d竴鑸湁錛欳lone(); Asign(); 榪樻湁鎷瘋礉鏋勯犲嚱鏁般傦紙瀵笵elphi鏉ヨ錛屼富瑕佽繕鏄墠涓ょ鏂規硶錛?/p>

 鍓嶉潰涓鑷充簲錛屽彲琚綊綰充負錛氬垱寤哄瀷妯″紡



Jacc.Kim 2011-05-15 15:48 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬩簩http://www.shnenglu.com/Tongy0/archive/2011/05/15/146414.htmlJacc.KimJacc.KimSun, 15 May 2011 07:31:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146414.htmlhttp://www.shnenglu.com/Tongy0/comments/146414.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146414.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146414.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146414.html璁捐妯″紡瀛︿範鎬葷粨涔嬩簩

涓夛細Singleton妯″紡錛堝崟瀹炰緥妯″紡錛?/p>

 欏懼悕鎬濅箟錛屽嵆鍗曚緥妯″紡銆傚叾涓昏鎬濇兂灝辨槸鍦ㄩ」鐩腑錛屼粎鍒涘緩涓涓疄渚嬪璞°傝瀵硅薄鐨勬娊璞★紝闄や簡閫氳繃鎸囧畾鐨勮幏鍙栧疄渚嬫帴鍙e錛屽啀娌″叾浠栧姙娉曞彲浠ュ垵濮嬪寲銆?br>姝ゅ彲浠ヤ繚璇佹暣涓郴緇熺敓鍛藉懆鏈熷唴錛屼粎浼氭湁涓涓疄渚嬪瓨鍦ㄣ傚彲浠ユ兂璞′竴涓嬶紝瀹冩槸鍙互涓庡厛鍓嶈鐨勫伐鍘傛ā寮忔垨鎶借薄宸ュ巶妯″紡緇撳悎浣跨敤鐨勩傚洜涓轟竴鑸潵璇達紝宸ュ巶鍙兘鍙細
鏈変竴涓紙鑷沖皯瀵規煇縐嶉昏緫澶勭悊鏉ヨ鏄繖鏍風殑錛夈?br> 鍦–++涓紝瀹炵幇鍗曚緥妯″紡錛岀浉瀵規瘮杈冪洿瑙傚強鍚堢悊銆傚皢璇ュ疄渚嬪畾涔夋垚static鎴愬憳鍗沖彲銆傚茍鎻愪緵鑾峰彇鍙婇噴鏀捐鎴愬憳鐨勬帴鍙c傝屽湪delphi涓紝錛堝氨鏈潵鐨勪簡瑙f潵璇達級
浼間箮騫舵病鏈夌洿瑙傜殑闈欐佹垚鍛樿繖涓璇存硶銆備絾鍙互瀹氫箟涓涓叏灞鍙橀噺錛屽茍鎻愪緵鑾峰彇涓庨噴鏀懼彉閲忕殑鎺ュ彛鏉ユā鎷熴傦紙浣嗭紝姣曠珶娌″姙娉曞悓綾誨瀷鐨勫疄渚嬭鍒涘緩鍑烘潵錛屾墍浠ユ渶濂借鍔?br>璇︾粏娉ㄩ噴璇存槑銆傚憡鐭ュ叾浠栫粍鍛橈紝姝や負鍗曞疄渚嬶級

 鍙傝冪殑c++瀹炵幇錛?br> class CA
 {
 private:
  CA(){}
 private:
  static CA* m_pAObj;
 public:
  virtual ~CA(){}
  static CA* GetAObj(void)
  {
   if (m_pAObj == NULL)
    m_pAObj = new CA();
   return m_pAObj;
  }
  static void SafeReleaseAObj(void)
  {
   if (m_pAObj != NULL)
    delete m_pAObj;
   m_pAObj = NULL;
  }
 };
 static CA* CA::m_pAObj = NULL;

 鍙傝冪殑Delphi瀹炵幇錛?br> unit xxx
 interface
 uses
   xxx,...,yyy;
 type
   TMyClass = class
   //xxxx
   end;
 var
   gAObj: TMyClass;//姝や負鍏ㄥ眬鐨勫崟瀹炰緥瀵硅薄銆?br> function GetAObj: TMyClass;
 procedure SafeReleaseAObj;
 implemention//榪欎釜鍗曡瘝蹇樹簡鏄笉鏄繖涔堝啓銆傚弽搴旀槸瀹炵幇鐨勯偅涓崟璇嶃傘?br> procedure SafeReleaseAObj;
 begin
   if Assigned(gAObj) then
     FreeAndNil(gAObj);
 end;
 funciton GetAObj: TMyClass;
 begin
   if not Assigned(gAObj) then
     gAObj = TMyClass.Create;
   Result := gAObj;
 end;

 //璇存槑錛氫互涓婁粎鏄復鏃跺啓鐨勶紝騫舵湭鍦ㄧ▼搴忎腑緙栬瘧嫻嬭瘯銆備絾鎬濊礬鑲畾涓嶄細閿欍傚彲渚涘弬鑰冪敤銆?br> 
鍥涳細Builder妯″紡錛堝嵆錛氭瀯寤烘ā寮忥級

 寰寰鍦ㄥ疄闄呴」鐩殑寮鍙戣繃紼嬩腑浼氬彂鐜幫紝鏌愪簺妯″潡鐨勫姛鑳借繃浜庡鏉傘傛鏃訛紝鎴戜滑鑷劧灝變細鎯沖埌灝嗗叾榪涜榪涗竴姝ョ殑鍒掑垎銆傚錛氱粏鍒嗘垚DA,DB,...,DN銆傜劧鍚庣敱璇ユā鍧楃殑鏌愪釜綆$悊瑙掕壊榪涜鍗忚皟榪愪綔銆?br>榪欐牱錛孊uilder妯″紡灝嗗彲鐢ㄥ湪姝よ璁′笂銆傚叾鎬濇兂錛屽氨鏄皢澶嶆潅闂榪涗竴姝ョ粏鍖栥?/p>

Jacc.Kim 2011-05-15 15:31 鍙戣〃璇勮
]]>
璁捐妯″紡瀛︿範鎬葷粨涔嬩竴http://www.shnenglu.com/Tongy0/archive/2011/05/15/146406.htmlJacc.KimJacc.KimSun, 15 May 2011 04:14:00 GMThttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146406.htmlhttp://www.shnenglu.com/Tongy0/comments/146406.htmlhttp://www.shnenglu.com/Tongy0/archive/2011/05/15/146406.html#Feedback0http://www.shnenglu.com/Tongy0/comments/commentRss/146406.htmlhttp://www.shnenglu.com/Tongy0/services/trackbacks/146406.html璁捐妯″紡瀛︿範鎬葷粨涔嬩竴

 璁捐妯″紡鍏跺疄鍙槸涓縐嶇▼搴忚璁$殑鎬濇兂鍑嗗垯銆傞氳繃璇ユ濇兂鍑嗗垯鏉ユ寚瀵兼垜浠殑紼嬪簭寮鍙戣涓猴紝灝介噺璁╁紑鍙戠殑紼嬪簭鏇村姞紼沖仴銆侀珮鏁堛佹濊礬娓呮櫚銆佸皯bug......
寮鍙戜竴紼嬪簭欏圭洰錛屽線寰騫朵笉鍙檺浜庡崟涓鍦頒嬌鐢ㄦ煇涓妯″紡銆傚線寰浼氬縐嶆ā寮忓悓鏃朵嬌鐢ㄣ?/p>

 鍏跺疄錛岃璁℃ā寮忓湪鍏蜂綋欏圭洰涓殑搴旂敤寮鍙戜腑銆傝璇磋鐢▁xx/xxx妯″紡鏉ユ惌妗嗘灦寮鍙戠瓑絳夛紝榪欎簺閮芥槸涓嶅鐨勩傚洜涓轟釜浜鴻涓猴紝璁捐妯″紡鐨勫簲鐢紝鏄殢鐫欏圭洰鐨?br>涓嶅悓鑰屽畾鐨勩傚洜涓轟笉鍚岀殑欏圭洰鏈夌潃涓嶅悓鐨勮В鍐蟲柟妗堛傝屼笉鍚岀殑瑙e喅鏂規錛屽皢鍐沖畾鐫錛岄渶瑕佷嬌鐢ㄥ摢xxx/鍝獂xx妯″紡鏉ュ鐞嗕細姣旇緝濂斤紝姝ゆ椂鎵嶈兘璇達紝紜畾浜嗛」鐩?br>鐨勬鏋剁瓑絳夈?br> 姣斿璇達細鏈潵闇瑕佸紑鍙戜竴涓湰鍦拌祫婧愮鐞嗙殑欏圭洰銆傚鏋滀綘涓寮濮嬪氨緇欏畠瀹氫簡涓瀹氳鐢ㄥ崟瀹炰緥妯″紡鏉ユ惌妗嗘灦瀹炵幇銆傞偅鎴戜滑灝變笉鏄庣櫧浜嗚繖涓疄渚嬶紝鍦ㄦ鏋朵腑錛?br>鍒板簳瀹冨簲璇ユ槸浠涔堛傚弽榪囨潵錛屾甯哥殑錛屾垜浠簲璇ユ牴鎹繖涓」鐩殑闇瑕佹潵紜畾搴旇鐢ㄥ埌鐨勬ā寮忋傚氨鎷胯渚嬪瓙鏉ヨ銆傛垜浠彲浠ュ璧勬簮鏂歸潰錛屼嬌鐢ㄦ娊璞″伐鏍堟ā寮?br>鍦ㄨ祫婧愪笌灞曠幇鍙婂叾澶勭悊鏂歸潰錛屾垜浠彲浠ュ簲鐢ㄨ瀵熸ā寮忥紙鍗籌細鎵璋撶殑observer妯″紡錛夈傚姝や竴鏉ワ紝鎴戝緢鏄庣‘浜嗭紝璇ョ郴緇熷ぇ緗殑妗嗘灦銆傝繖姝e簲浜嗗垰寮濮嬬殑涓鍙ヨ瘽
錛氳璁℃ā寮忓彧鏄竴縐嶇▼搴忚璁$殑鎬濇兂鍑嗗垯錛屽畠鍙槸鐢ㄦ潵鎸囧紼嬪簭寮鍙戠殑琛屼負銆?/p>

 褰撶劧鎯蟲噦寰楄璁℃ā寮忕殑涓滀笢錛岀‘瀹炶繕鏄涓嶅紑闈㈠悜瀵硅薄錛堢殑鎬濇兂錛夈傚oo鎬濇兂鏇磋В鐨勮秺娣卞埢錛屽璧瘋璁℃ā寮忕殑灝嗙浉瀵硅秺杞繪澗錛屼篃鏇磋В鐨勪細鏇存繁鍒諱簺錛堝綋鐒訛紝
瀛︿範瀹冨皢鏄釜涓嶆柇榪唬鐨勮繃紼嬬殑錛夈傚弽榪囨潵錛屽璁捐妯″紡鐞嗚В鐨勮秺娣卞埢錛屽oo鐨勭悊瑙e強搴旂敤涓庤璁★紝涔熷皢澶уぇ鏈夌泭銆?/p>

涓錛欶actory妯″紡錛堝伐鍘傛ā寮忥級

 鎵璋撶殑Factory妯″紡錛屽嵆錛氬畠鑳界被浼煎伐鍘備竴鏍鳳紝涓嶆柇鍦頒駭鐢燂紙鍗籌細鍒涘緩錛?#8220;浜у搧”鍑烘潵銆備絾瀹冩墍鍒涘緩鍑烘潵鐨勯偅浜?#8220;浜у搧”錛屼竴鑸槸鎶借薄綾葷殑浜у搧銆備婦渚嬶細
鍋囧鏈夋娊璞$被AbstractBasicClass銆傛垜浠鎯充嬌鐢ㄥ畠錛屽繀欏誨緱鏈夊畠鐨勫疄鐜扮被銆傛寜姝e父鏉ヨ錛屾垜浠彲浠ョ洿鎺ラ氳繃鍏跺叿浣撶殑瀛愮被瀹炰緥鍖栦竴涓駭鍝佸嚭鏉ャ備絾榪欐牱浼?br>鏈変釜闂錛屽綋AbstractBasicClass鎷ユ湁N縐嶄笉鍚岀殑瀹炵幇瀛愮被鏃訛紝閭f垜浠埌搴曡浣跨敤鍝鍏蜂綋瀛愮被鏉ュ疄渚嬪寲錛屽茍涓旓紝鍚勪釜涓嶅悓鐨勫叿浣撳疄鐜板瓙綾葷殑鍛藉悕錛屼篃灝嗘槸
涓彲鎬曠殑闂銆傚洜姝よ繖鏍風殑緇存姢灝嗗彉寰楀崄鍒嗗鏉傘傝孎actory鐨勮璁″氨鍙互璧鋒潵寰堝ソ鐨勪竴涓淮鎶や綔鐢ㄣ傚叾瀹濬actory妯″紡鐨勮璁★紝榪樻湁涓涓ソ澶勶紝灝辨槸浣垮緱瀹炰緥
鍖栧緱鍒頒簡鎺ㄨ繜錛堝埌浜嗗悗鏈?---涓鑸寚鎵ц鏈燂級銆?/p>

浜岋細AbstractFactory妯″紡錛堟娊璞″伐鍘傛ā寮忥級

 涓婇潰Factory妯″紡錛屽叾瀹為拡瀵圭殑鏄竴綾葷被鐨勬儏鍐碉紝鍗籌細澶勭悊鐨勪笂涓婇潰鐨凙bstractBasicClass榪欎竴綾葷被鐨勬儏鍐點傝屽疄闄呴」鐩腑錛屽嵈寰寰闇瑕佸鐞哊縐嶇殑榪欐牱鎶借薄綾匯?br>鐨勬儏鍐點傛鏃訛紝鎴戜滑灝嗚繖N縐嶇被鐨勪駭鍝佸垱寤洪兘褰掑埌涓涓狥actory涓椂錛屾鏃剁殑Factory鍗充負涓涓狝bstractFactory浜嗐傚洜姝よ錛孎actory涓嶢bstractFactory鍙笉榪?br>鏄鐞嗙殑綾誨悇綾葷殑涓暟宸紓緗簡銆傚叾鎬濇兂鏄被浼肩殑銆?br> 浣嗕竴鑸潵璇碅bstractFactory鎵浜х敓鍑烘潵鐨勭鎶借薄綾伙紝鍏跺疄瀹冧滑涔嬮棿錛屼竴鑸潵璇達紝鎴栧鎴栧皯錛屼細鏄湁涓瀹氱殑鍏崇郴鐨勩傛瘮濡傦細涓涓狝bstractfactory浜х敓鍑轟袱涓?br>鎶借薄綾葷殑浜у搧A鍜孊銆傚垯A鍙兘灝遍渶瑕丅鐨勬煇浜涘姛鑳斤紝鍙嶄箣綾諱技銆?/p>

 灝忕粨錛欶actory涓嶢bstractFactory鐨勮璁★紝鏈緇堢殑鐩殑閮藉彧鏄負浜嗕嬌鐢ㄧ郴緇熸娊璞$被鐨勭淮鎶ゆ洿鍔犵畝鍗曚簺銆?/p>

Jacc.Kim 2011-05-15 12:14 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品igao视频网网址不卡日韩| 欧美日韩三区四区| 欧美一区二区三区另类| 欧美一区二区视频在线观看2020| 欧美日本中文字幕| 国产亚洲精品资源在线26u| 精品动漫av| 在线性视频日韩欧美| 久久国产直播| 亚洲精品视频在线播放| 久久精品国产免费观看| 欧美三级乱码| 亚洲精品少妇| 男女激情视频一区| 亚洲综合色激情五月| 欧美福利视频网站| 国内精品久久久久久久影视蜜臀| 亚洲免费视频在线观看| 亚洲国产精品va在线看黑人 | 亚洲永久在线| 欧美激情1区2区3区| 亚洲自拍偷拍一区| 一区二区av在线| 久久精品成人一区二区三区| 久久免费视频一区| 国产一区二区三区免费不卡| 亚洲电影免费观看高清| 久久香蕉精品| 新片速递亚洲合集欧美合集| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产精品一区二区在线观看| 亚洲精品一区二区三区99| 亚洲欧美成人精品| 夜夜嗨av色一区二区不卡| 欧美激情视频一区二区三区免费 | 亚洲午夜精品久久| 国产精品日本一区二区 | 国产区精品视频| 久久成人免费网| 久久er精品视频| 在线 亚洲欧美在线综合一区| 久久理论片午夜琪琪电影网| 亚洲一区二区三区在线观看视频| 亚洲人成7777| 亚洲经典视频在线观看| 欧美日韩成人| 亚洲夫妻自拍| 亚洲激情图片小说视频| 亚洲黄色成人久久久| 激情懂色av一区av二区av| 亚洲午夜免费福利视频| 亚洲午夜激情| 久久久亚洲国产美女国产盗摄| 91久久国产综合久久蜜月精品| 欧美一区二视频| 久久黄色影院| 国产在线高清精品| 欧美中文字幕视频| 久久一区中文字幕| 欧美日本韩国一区二区三区| 亚洲综合三区| 国产精品欧美日韩一区二区| 一本色道久久综合亚洲精品婷婷 | 一区视频在线播放| 久久久久久一区二区| 麻豆国产精品va在线观看不卡| 欧美精品一区二区蜜臀亚洲| 欧美激情 亚洲a∨综合| 亚洲日韩视频| 欧美久久电影| 一区二区三区日韩精品视频| 亚洲欧美一级二级三级| 免费不卡视频| 欧美亚洲在线观看| 国产午夜精品久久| 99国产精品久久久| 亚洲国产mv| 欧美亚洲免费在线| 噜噜噜久久亚洲精品国产品小说| 在线观看欧美日韩| 欧美精品一区二区三区在线看午夜 | 国产一区美女| 免费日韩av电影| 欧美中文字幕第一页| 国精产品99永久一区一区| 美女精品一区| 在线午夜精品自拍| 99精品国产高清一区二区 | aa成人免费视频| 久久九九99视频| 国产精品免费aⅴ片在线观看| 亚洲精品乱码久久久久久按摩观| 黄网动漫久久久| 欧美日韩国产经典色站一区二区三区| 一区二区三区欧美日韩| 久热精品在线视频| 亚洲午夜在线观看| 一区在线电影| 国产精品九九| 亚洲视频在线一区观看| 巨胸喷奶水www久久久免费动漫| 亚洲免费电影在线观看| 欧美成人精品高清在线播放| 欧美不卡三区| 欧美一区二区三区四区夜夜大片 | 免费不卡亚洲欧美| 欧美在线日韩在线| 在线亚洲高清视频| 欧美黄色免费| 蜜臀av国产精品久久久久| 狠狠综合久久av一区二区小说| 亚洲在线国产日韩欧美| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区视频观看视频| 亚洲美洲欧洲综合国产一区| 黄色日韩网站| 国产欧美一区二区三区视频 | 欧美一区二区三区在线观看视频 | 亚洲尤物视频在线| 亚洲精品免费在线观看| 你懂的一区二区| 久久久水蜜桃av免费网站| 亚洲在线成人| 亚洲视频大全| 国产精品国产三级国产专播品爱网| 久久乐国产精品| 欧美一区二区三区视频在线观看| 亚洲少妇一区| 亚洲免费av片| 久久国产精品99精品国产| 一区二区三区黄色| 亚洲精品国产精品久久清纯直播| 亚洲福利视频网站| 美女久久网站| 免费的成人av| 免费亚洲一区二区| 性欧美xxxx大乳国产app| 狂野欧美激情性xxxx欧美| 久久久91精品国产| 久久久人成影片一区二区三区 | 亚洲一区综合| 亚洲系列中文字幕| 亚洲综合视频1区| 亚洲淫性视频| 欧美一区二区三区免费视频| 亚洲制服欧美中文字幕中文字幕| 国产精品久久久久久一区二区三区| 欧美日韩在线电影| 欧美四级在线观看| 国产精品一区二区久久久| 国产精品一香蕉国产线看观看 | 亚洲国产黄色| 亚洲激情午夜| 日韩视频一区二区在线观看| 中文高清一区| 亚洲欧美日韩一区二区三区在线观看| 午夜日韩视频| 久久夜色精品亚洲噜噜国产mv | 欧美在线亚洲在线| 老司机午夜免费精品视频| 久久这里有精品15一区二区三区| 农夫在线精品视频免费观看| 亚洲韩国日本中文字幕| 99亚洲视频| 久久精品最新地址| 欧美高清不卡在线| 久久久久久亚洲综合影院红桃 | 日韩亚洲精品在线| 欧美亚洲一区| 欧美激情一二区| 欧美成年人网| 国产精品视频精品| 亚洲欧洲另类| 欧美一区免费| 亚洲激情黄色| 欧美一二三区精品| 欧美日韩喷水| 1024欧美极品| 永久555www成人免费| 中文在线不卡| 欧美aa国产视频| 亚洲无线视频| 欧美成人午夜激情视频| 国产视频一区二区三区在线观看| 亚洲日本aⅴ片在线观看香蕉| 午夜久久美女| 亚洲精品一区二区三区婷婷月 | 国产欧美日韩在线观看| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩在线免费| 亚洲国产高清一区二区三区| 亚洲欧美国产77777| 亚洲第一区色| 久久精品动漫| 国产精品中文字幕欧美| 夜夜爽99久久国产综合精品女不卡 | 亚洲国产va精品久久久不卡综合| 久久av二区| 亚洲视频在线观看视频| 欧美精品九九|