通知 网站从因情语写改为晴雨,这个网站的模板也从calmlog_ex改为 whimurmur

结构型模式-装饰器模式

2709人浏览 / 0人评论 / | 作者:因情语写  | 分类: 设计模式与算法  | 标签: 设计模式与算法  | 

作者:因情语写

链接:https://www.proprogrammar.com/article/446

声明:请尊重原作者的劳动,如需转载请注明出处


  对原有对象进行修饰,如有一个篮子,现在对篮子进行修饰,放入苹果,香蕉,橙子

package constructional.pattern.decorator;

/* 
 * 创建一个对象的抽象也就是接口 
*/  
public interface Basket {  
    public void show();  
      
}
package constructional.pattern.decorator;

/** 
 *身份:被装饰的对象 
 *一个对接口的实现,这个对象表示要我们将来要修饰的篮子里装内容,如果想修饰篮子的造型,还可以创建其他类实现Basket的接口,比如Shape 
 * 不理解的话可以查看java语言的接口抽象机制 
*/  
public class Original implements Basket{  
    public void show(){  
      System.out.println("The original Basket contains");  
    }  
}
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
 *为原来的类添加新的功能 
*/  
public class AppleDecorator implements Basket{  
    private Basket basket;  
    public AppleDecorator( Basket basket){  
      super();  
      this.basket = basket;  
    }  
      
    public void show(){  
      basket.show();  
      System.out.println("An Apple");  
    }  
      
}
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
*/  
public class BananaDecorator implements Basket{  
    private Basket basket;  
    public BananaDecorator(Basket basket){  
        super();  
        this.basket = basket;  
    }  
      
    public void show(){  
        basket.show();  
        System.out.println("A Banana");  
    }  
      
}
package constructional.pattern.decorator;

/** 
 *身份:装饰器 
*/  
public class OrangeDecorator implements Basket{  
    private Basket basket;  
    public OrangeDecorator(Basket basket){  
        super();  
        this.basket = basket;  
    }  
      
    public void show(){  
        basket.show();  
        System.out.println("An Oranage");  
    }  
      
}

  测试代码如下:

package constructional.pattern.decorator;
/* 
 * 设计模式:装饰器模式 
 * java 简单的演示 
*/  
  
/** 
 * 
 * @author octobershiner 
 * 2011 7 25 
 * SE.HIT 
*/  
public class DecoratorPattern {  
  
    /** 
     * @param args the command line arguments 
*/  
    public static void main(String[] args) {  
        // TODO code application logic here  
        Basket basket = new Original();  
        //一个装饰的过程  
        Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket)));   
        myBasket.show();  
    }  
}

  运行结果:


亲爱的读者:有时间可以点赞评论一下

点赞(0) 打赏

全部评论

还没有评论!
广告位-帮帮忙点下广告