对于装饰器模式的理解
Posted 匿名甩尸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于装饰器模式的理解相关的知识,希望对你有一定的参考价值。
之前一直有个疑问,如果采用装饰器模式设计继承树,那客户端在调用的时候如何使用装饰器中的功能?原先理解的是客户端仍然只能查看接口,但接口带来的问题就是:子类添加的个性的方法无法体现在顶层的接口中,从而导致客户端无法使用子类的所有功能。
例如:
public interface A
public static A empty()
return new A1();
public void a();
public A1 implements A
public A1()
@Override
public void a()
public abstract Decorator implements A
protected A decoratedA;
public Decorator(A a)
decoratedA = a;
@Override
public void a()
decoratedA.a();
public Decorator1 extends Decorator
public Decorator1(A a)
super(a);
public void b();
A a = new A1();
A decorator = new Decorator1(a);
此时decorator无法调用b方法
查看网上别人的代码后发现,装饰器模式的装饰应该只真对于自身,而不能被外界使用,即b方法应该被private修饰。
以上是关于对于装饰器模式的理解的主要内容,如果未能解决你的问题,请参考以下文章