锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>


//鎺ュ彛
//ITransfer.h
#pragma once
class ITransfer

{
public:
virtual bool DoTransfer(...) = 0;
};
//FetionTransfer.h
class CFetionTransfer:public ITransfer

{
public:
CFetionTransfer();
~CFetionTransfer();
bool DoTransfer(...);
private:
......
};
//MailTransfer.h
class CMailTransfer: public ITransfer

{
public:
CMailTransfer();
~CMailTransfer();
bool DoTransfer(...);
private:
....
};
//TransferPool.h
#pragma once
#include "Transfer.h"
#include <vector>
using namespace std;
class CTransferPool

{
private:
vector<ITransfer*> vo;
public:
virtual ~CTransferPool();
void Login(ITransfer* po);
void Logout(ITransfer* po);
//鍚戝悇鎴愬憳騫挎挱娑堟伅
void Notify(...);
};
//TransferPool.cpp
#include "TransferPool.h"
CTransferPool::~CTransferPool()

{
vector<ITransfer*>::iterator vi = vo.begin();
for (; vi != vo.end(); vi++)
{
if(*vi)
}
}
void CTransferPool::Login(ITransfer* po)

{
vo.push_back(po);
}
void CTransferPool::Logout(ITransfer* po)

{
vector<ITransfer*>::iterator vi = vo.begin();
for (; vi != vo.end(); vi++)
{
if (*vi == po)
vo.erase(vi);
}
}
void CTransferPool::Notify(...)

{
vector<ITransfer*>::iterator vi = vo.begin();
for (; vi != vo.end(); vi++)
{
ITransfer *s = *vi;
(*vi)->DoTransfer(...);
}
}
void main

{
CTransferPool*m_pTranPool= new CTransferPool();
CFetionTransfer *m_pFetionTran = new CFetionTransfer(...);
CMailTransfer *m_pMailTran = new CMailTransfer(...);
m_pTranPool->Login(m_pFetionTran);
m_pTranPool->Login(m_pMailTran);
while(闇瑕佸彂閫佹秷鎭?
{
m_pTranPool->Notify(
);
}
//閲婃斁
if(m_pTranPool)
{
delete m_pTranPool;
m_pTranPool = NULL;
}



}