# 设计模式系列--代理模式
# 什么是代理模式
什么是代理? 代理简单点说就是当你想做一件事情,但是你当前因为某些原因做不了,而委托其他人去做,但是在其他人看来,这件事还是你做的,这就叫代理。 在设计模式中,经常为了把原始对象的实现信息隐藏的情况,这种情况下就需要使用代理模式
# 代理模式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_;
}
# 总结
代理模式经常用来隐藏不希望被看到的对象
* 转载请注明出处