ProxyPattern.cpp 628 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <iostream>
  2. using namespace std;
  3. class Subject {
  4. public:
  5. virtual void Request() = 0;
  6. virtual ~Subject() { }
  7. };
  8. class ConcreteSubject :public Subject {
  9. public:
  10. void Request() {
  11. cout << "ConcreteSubject::Request..." << endl;
  12. }
  13. };
  14. class Proxy {
  15. public:
  16. Proxy(Subject* subject) {
  17. _sub = subject;
  18. }
  19. void Reuqest() {
  20. cout << "Proxy::Request..." << endl;
  21. _sub->Request();
  22. }
  23. private:
  24. Subject *_sub;
  25. };
  26. int main() {
  27. Subject *sub = new ConcreteSubject();
  28. Proxy *p = new Proxy(sub);
  29. p->Reuqest();
  30. delete sub;
  31. delete p;
  32. return 0;
  33. }