# 设计模式系列--代理模式

# 什么是代理模式

什么是代理? 代理简单点说就是当你想做一件事情,但是你当前因为某些原因做不了,而委托其他人去做,但是在其他人看来,这件事还是你做的,这就叫代理。 在设计模式中,经常为了把原始对象的实现信息隐藏的情况,这种情况下就需要使用代理模式

# 代理模式c++实现

class Foo {
  public:
    Foo() = default;
    ~Foo() = default;
  void print() {
    std::cout << "this is Foo Object" << std::endl;
  }
};
class BaseProxy {
  public:
   virtual ~BaseProxy() = default;
   virtual void print() = 0;
}
class FooProxy : public BaseProxy {
  public:
    FooProxy() { foo_ = std::make_shared<Foo>();}
    ~FooProxy() override = default;
    void print() override {
      foo_->print();
    }
  private:
    std::shared_ptr<Foo> foo_;
} 
class Client{
  public:
    Client() { proxy_ = std::make_shared<FooProxy>();}
    ~Client() = default;
  void print() {
    proxy_->print();
  }
  private:
    std::shared_ptr<FooProxy> proxy_;
}

# 总结

代理模式经常用来隐藏不希望被看到的对象

* 转载请注明出处