<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

  • 随笔 - 3
  • 文章 - 0
  • 评论 - 0
  • 引用 - 0

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

2008年7月14日

观察者模式

#include <iostream>
#include 
<vector>
#include 
<string>
#include 
<functional>
#include 
<algorithm>
using namespace std;
class CEntry;
typedef vector
<CEntry> E_vec;



class CObserver
{
public:
    CObserver();
    
~CObserver();
    
int Add_Member(CEntry m);
    
int Remove_Member();
    
int Update(string m);
public:
    E_vec m_vec;
    
string m_date;
};


class CEntry
{
public:
    CEntry(CObserver 
* m,int state);
    CEntry(
int state);
    
~CEntry();
public:
    
int Update();

public:
    CObserver 
* m_date;
    
int m_state;
};

template 
<typename T>
struct SCompare:public binary_function<T,T,bool>
{
    
bool operator()(T a,T b)
    {
        
return a.m_state == b.m_state;
    }
};

CObserver::CObserver()
{
    cout
<<"CObserver Constructor!"<<endl;
    m_date 
= "";
}

CObserver::
~CObserver()
{
    cout
<<"CObserver Destructor!"<<endl;
}


int CObserver::Add_Member(CEntry m)
{
    m_vec.push_back(m);
    cout
<<"CObserver Add_Member!"<<endl;
    
return 0;
}

bool CC(CEntry a,int s)
{
    
return a.m_state == 3;
}

int CObserver::Remove_Member()
{
    m_vec.back();
    m_vec.pop_back();
    cout
<<"CObserver Remove_Member!"<<endl;
    
return 0;
}

int CObserver::Update(string m)
{
    
if(m_date.empty())
    {
        m_date 
= m;
        cout
<<"CObserver Update NULL!"<<endl;
    }
    
else
    {
        cout
<<"CObserver Update:["<<m_date<<"],change:["<<m<<"]"<<endl;
        m_date.erase();
        m_date 
= m;
    }
    E_vec::iterator e_iter;
    
for(e_iter = m_vec.begin();e_iter != m_vec.end();++e_iter)
    {
        (
*e_iter).Update();
    }
    
return 1;
}

CEntry::CEntry(CObserver 
* m,int state)
{
    m_date 
= m;
    m_state 
= state;
}

CEntry::CEntry(
int state)
{
    m_date 
= NULL;
    m_state 
= state;
}

int CEntry::Update()
{
    cout
<<"CEntry Update!"<<m_date->m_date<<","<<m_state<<endl;
    
return 0;
}

CEntry::
~CEntry()
{

}

posted @ 2008-07-14 16:48 QQ小青蛙 阅读(213) | 评论 (0)编辑 收藏
唯一设计模式

 

 1#include <iostream>
 2using namespace std;
 3
 4class CSingle
 5{
 6public:
 7    static CSingle * Get_Instance();
 8    ~CSingle();
 9private:
10    CSingle();
11    static CSingle * m_date;
12}
;
13
14CSingle::CSingle()
15{
16    
17}

18
19CSingle::~CSingle()
20{
21    if(m_date != NULL)
22        delete m_date;
23}

24
25CSingle* CSingle::m_date = NULL;
26
27CSingle * CSingle::Get_Instance()
28{
29    if(m_date == NULL)
30    {
31        m_date = new CSingle;
32    }

33    return m_date;
34}

35
36
37void main()
38{
39    CSingle* m_single = CSingle::Get_Instance();
40    CSingle * m_single1 = CSingle::Get_Instance();
41}

 

posted @ 2008-07-14 15:54 QQ小青蛙 阅读(207) | 评论 (0)编辑 收藏

2008年6月23日

C++ CFinal实现

#include <stdio.h>
#include 
<iostream>
using namespace std;
class CFinal
{
    
private:
        CFinal();
    
public:
        
~CFinal();
        
static CFinal * Create_Instance();
    
public:
        
static CFinal *_date;
}
;

class CDerived:public CFinal
{
    
public:
        CDerived();
    
~CDerived();
}
;

CFinal::CFinal()
{
    cout
<<"Constructor CFinal!"<<endl;
}



CFinal::
~CFinal()
{
    cout
<<"Destructor CFinal!"<<endl;
}



CFinal
* CFinal::_date = NULL;
CFinal
* CFinal::Create_Instance()
{
    
if(_date == NULL)
    
{
        cout
<<"New CFinal"<<endl;
        _date 
= new CFinal;
        
return _date;
    }

    cout 
<<"Return _date!"<<endl;
    
return _date;
}



CDerived::CDerived()
{
//error 
}


CDerived::
~CDerived()
{

}


class CFinal2;
class CObstract
{
    
private:
        CObstract();
        friend 
class CFinal2;
    
public:
            
~CObstract();
}
;

class CFinal2: virtual public CObstract
{
    
public:
        CFinal2();
        
~CFinal2();
}
;
CObstract::CObstract()
{
}


CObstract::
~CObstract()
{
}


CFinal2::CFinal2()
{

}



CFinal2::
~CFinal2()
{
}



class CC :public CFinal2
{
public:
    CC();
    
~CC();
}
;

CC::CC()
{

}

CC::
~CC()
{

}

int main(int argc, char *argv[])
{
    printf(
"Hello, world\n");
    CDerived cs;
    
return 0;
}

posted @ 2008-06-23 16:27 QQ小青蛙 阅读(225) | 评论 (0)编辑 收藏
仅列出标题