#include "stdafx.h" #include <iostream> class CImplementor { public: virtual ~CImplementor() {} public: virtual void Print() = 0; }; class CConcreteImplementor : public CImplementor { public: virtual void Print() { std::cout << "Hello, Bridge Pattern" << std::endl; } }; class CAbstraction { public: CAbstraction(class CImplementor* pImpl) : m_pImpl(pImpl) { } ~CAbstraction() { if (m_pImpl != NULL) delete m_pImpl; } public: virtual void Print() = 0; protected: class CImplementor* m_pImpl; }; class CRefinedAbstraction : public CAbstraction { public: CRefinedAbstraction(class CImplementor* pImpl) : CAbstraction(pImpl) { } public: virtual void Print() { if (m_pImpl != NULL) m_pImpl->Print(); } }; int _tmain(int argc, TCHAR argv[]) { CRefinedAbstraction obj(new CConcreteImplementor); obj.Print(); return 0; }