#include<iostream>
#include<map>
using namespace std;
class Command{
public:
virtual void Invoke(int*,int)=0;
};
class CmdPlus :public Command{
CmdPlus(){};
void Invoke(int* agNum1,int agNum2){
*agNum1+=agNum2;
}
friend class CmdManager;
};
class CmdMinus:public Command{
CmdMinus(){}
void Invoke(int* agNum1,int agNum2){
*agNum1-=agNum2;
}
friend class CmdManager;
};
class CmdManager{
static CmdManager* cm;
int mAnswer;
map<char, Command*> mArrayofCmd;
void lnit(){
mAnswer=0;
AddCmd();
}
void AddCmd(){
mArrayofCmd['+']=new CmdPlus();
mArrayofCmd['-']=new CmdMinus();
}
public:
static CmdManager * getInstance(){
if(cm==NULL){
CmdManager* instanceOfCM=new CmdManager();
instanceOfCM->lnit();
return instanceOfCM;
}
return cm;
}
static void destroyInstance(){
if(cm!=NULL){
delete cm;
}
}
void Invoke(int agNum,char agOperator){
mArrayofCmd[agOperator]->Invoke(&mAnswer,agNum);
}
int getAnswer(){
return mAnswer;
}
};
CmdManager* CmdManager::cm=NULL;
int main(){
CmdManager* cm=CmdManager::getInstance();
cm->Invoke(5,'+');
cm->Invoke(3,'+');
cm->Invoke(2,'-');
cout<<"Answer = "<<cm->getAnswer()<<endl;
CmdManager::destroyInstance();
}
---------------------------------------------------------------------
순수가상함수 Invoke를 재정의하여 각 클래스에 맞게 연산하도록 하였다.
CmdManager클래스를 이용해 각각의 연산을 분류해서 호출하고 각 연산의 값을 누적시켰다.
댓글 0
번호 | 제목 | 글쓴이 | 최근 수정일 | 조회 수 |
---|---|---|---|---|
공지 | 안내사항 | 관리자 | 2019.12.21 | 159 |
105 | rewind() 함수의 사용에 관하여 | 관리자 | 2024.03.13 | 101 |
104 | 일반화 함수의 사용3 | 관리자 | 2019.03.01 | 158 |
103 | 일반화 함수의 사용2 | 관리자 | 2019.02.28 | 158 |
102 | 일반화 함수 사용 | 관리자 | 2019.02.28 | 153 |
» | 순수가상함수 사용 계산기 | 관리자 | 2019.02.27 | 210 |
100 | 순수가상함수 사용한 여러 도형의 넓이 구하기 | 관리자 | 2019.02.27 | 191 |
99 | 순수 가상함수 | 관리자 | 2019.02.27 | 157 |
98 | 가상소멸자 | 관리자 | 2019.02.27 | 146 |
97 | 가상함수 사용3 | 관리자 | 2019.02.27 | 152 |
96 | 가상함수의 사용2 | 관리자 | 2019.02.26 | 165 |
95 | 가상함수 사용1 | 관리자 | 2019.02.26 | 152 |
94 | 사각형정보 입력받아 파일에 출력하기 | 관리자 | 2019.02.26 | 205 |
93 | 파일 복사 | 관리자 | 2019.02.26 | 156 |
92 | 파일 출력 | 관리자 | 2019.02.26 | 151 |
91 | 조작자 생성2 | 관리자 | 2019.02.26 | 149 |
90 | 조작자 생성1 | 관리자 | 2019.02.25 | 151 |
89 | 입출력연산자 중복 | 관리자 | 2019.02.25 | 149 |
88 | 일반 출력설정 | 관리자 | 2019.02.25 | 151 |
87 | 조작자를 통한 출력 설정 | 관리자 | 2019.02.25 | 162 |
86 | 연산자 중복 - 차집합구하기 | 관리자 | 2019.02.25 | 276 |
85 | 연산자 중복-교집합과 합집합 구하기 | 관리자 | 2019.02.25 | 194 |
84 | 연산자 중복-스트림연산자 | 관리자 | 2019.02.21 | 150 |
83 | 연산자 중복-치환연산자 | 관리자 | 2019.02.20 | 289 |
82 | 연산자 중복-friend함수 사용 | 관리자 | 2019.02.20 | 154 |
81 | 연산자 중복-단항연산자 | 관리자 | 2019.02.20 | 205 |
80 | 연산자 중복-관계연산자 | 관리자 | 2019.02.20 | 149 |
79 | 연산자 중복-이항연산자 | 관리자 | 2019.02.20 | 175 |
78 | 함수 중복 이용한 숫자 차 계산 | 관리자 | 2019.02.19 | 159 |
77 | 함수 포인터와 함수 중복 | 관리자 | 2019.02.19 | 199 |