어떤 객체가 수행하는 기능을 그대로 수행하면서, 부가적인 기능을 수행하거나 기존 역할을 대행하기 위해 새 클래스를 정의하고, 새로 정의된 클래스를 통해서 외부와 통신하는 것을 프록시 패턴이라고 합니다.
class IObject { public: virtual void Use() = 0; }; class CQuickSlot { IObject *m_piObejct; public: bool isExist(){ return m_piObejct != NULL ? true : false; } void Use(){ if(m_piObejct) m_piObejct->Use(); } }; class CQuickSlotProxy { CQuickSlot *m_pcQuickSlot; public: CQuickSlotProxy() : m_pcQuickSlot(NULL) { } ~CQuickSlotProxy() { if(m_pcQuickSlot) delete m_pcQuickSlot; } bool isExist(){ if(m_pcQuickSlot) return m_pcQuickSlot->isExist(); return false; } bool Use(){ if(m_pcQuickSlot){ m_pcQuickSlot->Use(); return true; } //bool형으로바뀌면서실제사용했는지여부를알수있게되었다. return false; } }; |