Java设计模式之装饰模式

来源:互联网 发布:美发店收银软件 编辑:程序博客网 时间:2024/05/18 10:23

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:
装饰模式

Source类是被装饰类Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:

//1.创建一个接口public interface Sourceable {      public void method();  }  
//2.编写接口的实现类public class Source implements Sourceable {      @Override      public void method() {          System.out.println("the original method!");      }  }  
//3.装饰被装饰类public class Decorator implements Sourceable {      //合成复用法则,把另一个对象当中当前类的一个属性,以构造方法的形式传过来    //    private Sourceable source;   //装饰类把被装饰类当做一个属性       public Decorator(Sourceable source){  //把被装饰者给传过来        super();          this.source = source;      }      @Override      public void method() {          System.out.println("before decorator!");          source.method();  //在调用被装饰类之前可以做一些其他的操作        System.out.println("after decorator!");      }  }  
//测试类public class DecoratorTest {      public static void main(String[] args) {          Sourceable source = new Source();          Sourceable obj = new Decorator(source);          obj.method();      }  }  

装饰者设计模式
接口
原始类
装饰类

使用场景:为一个类动态的添加和动态的移除功能。

原创粉丝点击