装饰者模式在API中使用最为典型的就是流的使用方式,层层包装,你想要什么流就组装什么流即可,如:InputStream,FileIInputStream,BufferedInputStream等,我将一个简单的代码示例贴出来给大家看看,这是一个很简单的实现,
/**
* 实际事物中的抽象最顶层的接口
* @author lvzh
*
*/
public interface Component {
//实际事物具有的最小的原子性行为 最本质的行为
public void action();
}
/**
* 原子性的个体 假如拿流来比喻则:字节流
* @author lvzh
*
*/
public class ConcreateComponent implements Component{
@Override
public void action() {
// 在此做具体的实现
}
}
/**
* 装饰者
* @author lvzh
*/
public class Decorator implements Component{
//对什么介质进行装饰,此处可以通过 spring的依赖注入,如此显得耦合度更低
public Component comp;
//构造方法 有参构造
public Decorator(Component comp){
this.comp=comp;//给我们的属性赋值
}
@Override
public void action() {
comp.action();
}
}
/**
* 将基本的成分装饰成DecoratorA这个对象
* @author lvzh
*
*/
public class DecoratorA extends Decorator{
public DecoratorA(Component comp) {
super(comp);
}
//重写父类的action方法
public void action(){
/**
* 此处可以添加更多的代码来修饰我们的基本成分,如果想要添加其他的类型,只需要将新写一个类继承Decorator就可以了
*/
comp.action();
}
}