BridgePattern.cpp 946 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <iostream>
  2. using namespace std;
  3. // Abstraction
  4. class Abstraction {
  5. public:
  6. virtual void Operation() = 0;
  7. virtual ~Abstraction() { }
  8. protected:
  9. Abstraction() { }
  10. };
  11. // AbstractionImp
  12. class AbstractionImp :public Abstraction {
  13. public:
  14. virtual void Operation() = 0;
  15. virtual ~AbstractionImp() { }
  16. protected:
  17. AbstractionImp() { }
  18. };
  19. class ConcreteAbstractionImp :public AbstractionImp {
  20. public:
  21. void Operation() {
  22. cout << "ConcreteAbstractionImp Operation..." << endl;
  23. }
  24. };
  25. class RefinedAbstraction :public Abstraction {
  26. public:
  27. RefinedAbstraction(AbstractionImp *imp) {
  28. _imp = imp;
  29. }
  30. void Operation() {
  31. _imp->Operation();
  32. }
  33. private:
  34. AbstractionImp *_imp;
  35. };
  36. int main() {
  37. AbstractionImp *imp = new ConcreteAbstractionImp();
  38. Abstraction *abs = new RefinedAbstraction(imp);
  39. abs->Operation();
  40. delete imp;
  41. delete abs;
  42. return 0;
  43. }