디자인 모드 의 명령 모드 (Command)
2813 단어 명령 모드
본 고 는 식당 에서 주문 한 예 를 들 었 다.(1) 불고기 사 부 는 백 스테이지 (주방) 에서 요 리 를 책임 진다.(2) Command 는 메뉴 에 해당 하 는 각종 명령 을 제공 합 니 다.(3) 종업원 은 고객 과 접촉 하여 고객 이 어떤 요 리 를 시 켰 는 지 기록 하고 요리사 에 게 맡 깁 니 다.(4) 고객 은 주문 을 책임 진다.
코드:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Command;
class MakeChikenCmd;
class MakeMuttonCmd;
//
class RoastCook{
friend class MakeChikenCmd;
friend class MakeMuttonCmd;
private:
void MakeMutton()
{ cout << " "; }
void MakeChickenWing()
{ cout << " "; }
};
// ,
class Command{
public:
Command(RoastCook* cook)
{
cooker = cook;
}
virtual ~Command(){}
virtual void Execute()=0;
protected:
RoastCook *cooker;//
};
//
class MakeMuttonCmd : public Command{
public:
MakeMuttonCmd(RoastCook *cook):Command(cook){}
void Execute()
{
cooker->MakeMutton();
}
};
//
class MakeChikenCmd : public Command{
public:
MakeChikenCmd(RoastCook *cook):Command(cook){}
void Execute()
{
cooker->MakeChickenWing();
}
};
// ,
class Waiter{
public:
Waiter(string _name)
{this->name = _name;}
void AddOder(Command* subOder)//
{
oder.push_back(subOder);
}
void Notify()
{
vector<Command*>::iterator iter;
cout<<name<<" :"<<endl;
for(iter = oder.begin();iter!=oder.end();++iter){
cout<<" ";
(*iter)->Execute();
cout<<endl;
}
}
string getName()const
{return name;}
private:
vector<Command*> oder;//
string name;//
};
class Custmer{
public:
Custmer(string myname)
{
this->name = myname;
this->w = NULL;
}
void CustmerOder(Command *cmd)
{
cout<<" "<<name<<" "<<endl;
w->AddOder(cmd);
}
void CallWaiter(Waiter *_w)
{
cout<<" "<<name<<" "<<endl;
this->w = _w;
cout<<" "<<w->getName()<<" "<<endl;
}
private:
string name;
Waiter *w;
};
int main()
{
RoastCook *cooker = new RoastCook();
Command *cmd = new MakeChikenCmd(cooker);
Command *cmd1 = new MakeMuttonCmd(cooker);
Waiter waiter("sps");
Custmer cust("lsj");
cust.CallWaiter(&waiter);//
cust.CustmerOder(cmd);//
cust.CustmerOder(cmd1);//
waiter.Notify();//
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
php 디자인 모드의 명령 모드의 응용 상세명령 모드: 요청을 하나의 대상으로 봉인하여 서로 다른 요청으로 고객을 매개 변수화할 수 있습니다.요청에 대해 요청 로그를 정렬하거나 기록하고 취소 가능한 작업을 지원합니다.명령 클래스: 1.명령 역할: 모든 구체적...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.