代理模式和装饰者模式上在语法形式上几乎完全一样,那么它们的区别在哪里呢?
装饰者模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活
代理模式:为其它对象提供一种代理以控制对这个对象的访问。
其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。
由此可以看到:学习设计模式重点在于“语义”上把握,而不是追求它的“形式。
代理模式的UML
装饰模式的UML
代理模式和装饰者模式上在语法形式上几乎完全一样,那么它们的区别在哪里呢?
装饰者模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活
代理模式:为其它对象提供一种代理以控制对这个对象的访问。
其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。
由此可以看到:学习设计模式重点在于“语义”上把握,而不是追求它的“形式。
代理模式的UML
装饰模式的UML