对于装饰器模式的理解

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修饰。

以上是关于对于装饰器模式的理解的主要内容,如果未能解决你的问题,请参考以下文章

对于装饰器模式的理解

结构型模式————装饰器模式(3.1)

python装饰器三种装饰模式的简单理解

设计模式之简单理解装饰器模式与运用

对于python装饰器结合递归的进一步理解

python--对于装饰器的理解