在外部请求下,对多个派生类的选择方法。
A:对象管理类
// GOF 的方式
class A
private:
friend class state;
void changestate(state*);
state* _state;
void A::changestate(state* s)
{
_state = s;
}
class state
public:
void changestate(A*, state*);
void state::changestate(A* t, state* s);
{
t->changestate(s);
}
class Ua,Ub,Uc : public state
changestate(t, Ua::Ua());
changestate(t, Ub::Ub());
changestate(t, Uc::Uc());
///////////////////////////////////////////////////////////////////////
它将逻辑关系控制权分配到state的三个派生类,由它们自己维护。后续要如何扩展?我觉得还是过程思想在作怪,^_^。
向大师学习!
class A
private:
int stateId;
void respond(state*); // 接受state 派生类的回传
friend class state;
void changestate(state*);
state* _state;
void changestate(state* s)
{
_state=s;
_state->select(int stateId);
}
class state
public:
void respond(A*, state*);
private:
void select(int);
void select(int id)
{
Switch(id)
case 0:
Ua* ua->Ua();
break;
case 1:
Ub* ub->Ub();
break;
case 2:
Uc* uc->Uc();
break;
default:
errror();
break;
}
void respond(A* t, state* s)
{
t->respond(s);
}
class Ua,Ub,Uc : public state
respond(t, Ua::Ua());
respond(t, Ub::Ub());
respond(t, Uc::Uc());