《黑马程序员》设计模式之DECORATOR -装饰模式

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------ 

装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。 

Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的的礼物,就是爱你的Fita”,再到街上礼品店买了个像框(卖礼品的MM也很漂亮哦),再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……,我们都是Decorator,最终都在修饰我这个人呀,怎么样,看懂了吗? 

public interface Work

  public void insert(); 

}

public class SquarePeg implements Work{
  public void insert(){
    System.out.println("方形桩插入");
  } 

}

public class Decorator implements Work{   

     private Work work;
  //额外增加的功能被打包在这个List中
  private ArrayList others = new ArrayList(); 

  //在构造器中使用组合new方式,引入Work对象;
  public Decorator(Work work)
  {
    this.work=work;
   
    others.add("挖坑");

    others.add("钉木板");
  }

  public void insert(){

    newMethod();
  } 


  
  //在新方法中,我们在insert之前增加其它方法,这里次序先后是用户灵活指定的    
  public void newMethod()
  {
    otherMethod();
    work.insert();


  } 
 

  public void otherMethod()
  {
    ListIterator listIterator = others.listIterator();
    while (listIterator.hasNext())
    {
      System.out.println(((String)(listIterator.next())) + " 正在进行");
    }

  } 
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值