customizable behavior
은 다른 Derived Classes
에 의해 제공되는 구현 즉, Interface
에서 파생되는 클래스를 의미합니다.
이 있다면 :
class IMachine
{
public:
int ProcessJob()
{
cout << "Processing Job in By-Default way" << endl;
}
virtual int ProcessOrder()
{
cout << "Processing Order in By-Default way" << endl;
}
};
class CMachine_A : public IMachine
{
public:
int ProcessJob()
{
cout << "Processing Job in Machine A's way" << endl;
}
int ProcessOrder()
{
cout << "Processing Order in Machine A's way" << endl;
}
};
class CMachine_B : public IMachine
{
public:
int ProcessJob()
{
cout << "Processing Job in Machine B's way" << endl;
}
int ProcessOrder()
{
cout << "Processing Order in Machine B's way" << endl;
}
};
IMachine *pMachine;
CMachine_A oMachineA;
CMachine_B oMachineB;
pMachine = &oMachineA;
pMachine->ProcessJob();
pMachine = &oMachineB;
pMachine->ProcessJob();
Output:
Processing Job in By-Default way
Processing Job in By-Default way
따라서 다른 구체적인 구현 예에 비록 pMachine
포인트 (읽어 파생 클래스) 위의 예에서, 출력에 관계없이 선택된 구현/유도 클래스와 동일하다. 즉, 시스템 A 및 시스템 B의 customizable behavior
이 유효하지 않거나 존중되지 않습니다. 따라서 가상이 아닌IMachine::ProcessJob()
인터페이스를 사용하여 인터페이스 IMachine
은 사용되는 시스템 유형 (CMachine_A
또는 CMachine_B
)과 관계없이 작업이 처리되는 방식을 분리/무시/억제했습니다.
이제 이것을 고려해야
여기
IMachine *pMachine;
CMachine_A oMachineA;
CMachine_B oMachineB;
pMachine = &oMachineA;
pMachine->ProcessOrder();
pMachine = &oMachineB;
pMachine->ProcessOrder();
Output:
Processing Order in Machine A's way
Processing Order in Machine B's way
때 다른 구체적인 구현 (읽어 파생 클래스)에 pMachine
점, 출력 선택된 구현/파생 된 클래스에 따른 것이다. 즉, A 머신과 B 머신의 customizable behavior
이 효력을 발생하거나 존중합니다. 따라서 가상IMachine::ProcessOrder()
을 가지고 인터페이스 IMachine
은 사용 된 기계 유형 (CMachine_A
또는 CMachine_B
)에 따라 주문이 처리되는 옵션/방법을 계속 열었습니다. 인터페이스 IMachine
함수 ProcessOrder
위한 customizable behavior
를 제공 할 수 ProcessOrder
virtual
따라서 다른 구현/유도 된 클래스를 유지하고 이후에 짧은
.