装饰者模式(Decorator)
动态地给一个对象添加一些额外的职责,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
看我通俗易懂的来描述一遍:装饰者和被装饰者需要继承同一个接口或者是抽象类,被装饰者作为装饰者的一个变量。程序中原来调用被装饰者某方法func1的地方改成调用装饰者相同的那个方法func1,并且装饰者的该方法func1上添加了一些额外的功能,在方法func1中再调用被装饰着的方法func1。
package com.decorator;
public interface TargetInterface {
public void method1();
}
package com.decorator;
public class Target implements TargetInterface {
@Override
public void method1() {
System.out.println("被装饰类的方法:method1。");
}
}
package com.decorator;
public class Decorator implements TargetInterface{
private TargetInterface t;
public Decorator(Target t) {
super();
this.t = t;
}
public void method1(){
System.out.println("decorator method begin:");
t.method1();
System.out.println("decorator method end.");
}
}
package com.decorator;
/**
* ClassName: main
* @Description: 装饰模式就是给一个对象增加一些新的功能,而且是动态的,
* 要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
* @author Panyk
* @date 2015年10月13日
*/
public class main {
public static void main(String[] args) {
TargetInterface d = new Decorator(new Target());
d.method1();
}
}