添加中介者模式
parent
be3e09a06f
commit
c74021ed3c
|
@ -34,7 +34,7 @@ aux_source_directory(src DIRSRCS)
|
||||||
aux_source_directory(src/pattern PaternSrc)
|
aux_source_directory(src/pattern PaternSrc)
|
||||||
|
|
||||||
|
|
||||||
add_library(General OBJECT ${DIRSRCS} ${PaternSrc} src/pattern/signleton.hpp src/pattern/Observer.hpp src/pattern/stratergy.hpp src/pattern/adapter.hpp src/encrypt/base64.cpp src/encrypt/base64.h src/encrypt/aes.cpp src/encrypt/aes.h src/encrypt/rsa.cpp
|
add_library(General OBJECT ${DIRSRCS} ${PaternSrc} src/pattern/signleton.hpp src/pattern/Observer.hpp src/pattern/stratergy.hpp "src/ b-+/adapter.hpp" src/encrypt/base64.cpp src/encrypt/base64.h src/encrypt/aes.cpp src/encrypt/aes.h src/encrypt/rsa.cpp
|
||||||
src/math/BigInt.hpp src/net/TcpClient.cpp src/net/TcpClient.h src/net/PackageReceiver.cpp src/net/PackageReceiver.h src/function/btree.cpp src/function/btree.h src/algorithm/sorter.hpp)
|
src/math/BigInt.hpp src/net/TcpClient.cpp src/net/TcpClient.h src/net/PackageReceiver.cpp src/net/PackageReceiver.h src/function/btree.cpp src/function/btree.h src/algorithm/sorter.hpp)
|
||||||
|
|
||||||
set(COPYITEM inc)
|
set(COPYITEM inc)
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#ifndef GENERAL_ADAPTER_H
|
#ifndef GENERAL_ADAPTER_H
|
||||||
#define GENERAL_ADAPTER_H
|
#define GENERAL_ADAPTER_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class Adapter{
|
class Adapter{
|
||||||
T mAdapter;
|
T mAdapter;
|
||||||
|
@ -37,4 +39,51 @@ private:
|
||||||
ResponsabilityChan *mHead;
|
ResponsabilityChan *mHead;
|
||||||
ResponsabilityChan *mTail;
|
ResponsabilityChan *mTail;
|
||||||
};
|
};
|
||||||
|
class Mediator;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
class MediatorColleague{
|
||||||
|
public:
|
||||||
|
MediatorColleague(std::string name,Mediator *p){
|
||||||
|
mName = name;
|
||||||
|
mMediater = p;
|
||||||
|
}
|
||||||
|
std::string GetName(){
|
||||||
|
return mName;
|
||||||
|
};
|
||||||
|
int SetMediater(Mediator* p){
|
||||||
|
mMediater = p;
|
||||||
|
|
||||||
|
}
|
||||||
|
virtual int Send(std::string colleage,T* data){
|
||||||
|
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
MediatorColleague(){
|
||||||
|
|
||||||
|
}
|
||||||
|
std::string mName;
|
||||||
|
Mediator *mMediater;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Mediator{
|
||||||
|
public:
|
||||||
|
virtual int Register(MediatorColleague *p){ // 注册
|
||||||
|
if (nullptr == p){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if(mColleague.find(p->GetName()) != mColleague.end()){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
mColleague[p->GetName()] = p;
|
||||||
|
p->SetMediater(this);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
virtual int Relay(MediatorColleague *p){ //转发
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::map<std::string,MediatorColleague*> mColleague;
|
||||||
|
};
|
||||||
|
|
||||||
#endif //GENERAL_ADAPTER_H
|
#endif //GENERAL_ADAPTER_H
|
||||||
|
|
Loading…
Reference in New Issue