AdapterPattern.cpp 674 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <iostream>
  2. using namespace std;
  3. class Target {
  4. public:
  5. virtual void Request() {
  6. cout << "Target::Request..." << endl;
  7. }
  8. virtual ~Target() { }
  9. };
  10. class Adaptee {
  11. public:
  12. void SpecificRequest() {
  13. cout << "Adaptee::SpecificRequest..." << endl;
  14. }
  15. };
  16. class Adapter :public Target, private Adaptee {
  17. public:
  18. Adapter(Adaptee* ade) {
  19. _ade = ade;
  20. }
  21. void Request() {
  22. _ade->SpecificRequest();
  23. }
  24. private:
  25. Adaptee *_ade;
  26. };
  27. int main() {
  28. Adaptee *adaptee = new Adaptee();
  29. Target *adapter = new Adapter(adaptee);
  30. adapter->Request();
  31. delete adapter;
  32. delete adaptee;
  33. return 0;
  34. }