简单的装饰模式

package decorate;

public interface IByDecorate {

	void sayHello();

}
 
package decorate;

public class ByDecorateImp implements IByDecorate {

	@Override
	public void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("==========="+this);

	}

}

 

  它们的着重点一个在于“增加”职责,    代理模式 在于“控制”访问(不让对真实对象进行访问)。这是它们最本质的区别

 

package decorate;

public class abstractDecorate implements IByDecorate {

	private IByDecorate bydecorate;

	public abstractDecorate(IByDecorate iByDecorate) {
		this.bydecorate = iByDecorate;

	}

	@Override
	public void sayHello() {
		// TODO Auto-generated method stub
		bydecorate.sayHello();
	}

}
 
package decorate;

public class abstractDecorateImp extends abstractDecorate {

	public abstractDecorateImp(IByDecorate iByDecorate) {
		super(iByDecorate);
		// TODO Auto-generated constructor stub
	}

	public void sayHello() {
		sayHello1();
		super.sayHello();
		sayHello2();
	}

	public void sayHello1() {
		System.out.println("hello1");
	}

	public void sayHello2() {
		System.out.println("hello2");
	}

	
	public static void main(String[] argv) {
		IByDecorate decorate = new abstractDecorateImp(new ByDecorateImp());
		decorate.sayHello();

	}

}

你可能感兴趣的:(装饰模式)