设计模式之装饰器模式

装饰器模式,这个模式真的很容易懂,啥叫装饰?

当然是你住进新房子了,要装修啊,

装饰是否必要?

当然不是必要的,你不装修,也可以住房子、、、只是。。。

为什么要装修?

装修了环境,舒服了,人也心情好了,当然高兴啊

装修改变了你的房子的结构了吗?

当然没有,你房子在哪里还是在哪里,墙难道在装修之后就变成不是墙了吗???


不知道,大家注意到上面这几个问题没有。

其实,装饰模式就是在原来基础上,增加一些新功能,比如,刷刷墙,贴个画,

传统的如果想在类中增加改变功能,我们只需继承这个类,重写这个方法就可以了,但是这里有个问题就是。从父类继承的东西是写死的,而你重新写就又浪费了很多代码,没有重用,子类会爆炸增长。

而通过装饰,则可以动态的增加,透明。。。看例子

public class TestDecorator {

public static void main(String[] args) {

Wall t1=new BeforeWall();

Wall t2=new AfterWall(t1);


t2.status();


}

}



abstract class Wall{

public abstract void status();

}

class BeforeWall extends Wall{

public void status(){

System.out.println("我家没有装修,这怎么住%>_<%");

}

}






class AfterWall extends Wall{

Wall Wall;

public AfterWall(Wall t){

this.Wall=t;

}

public void status(){

Wall.status();

System.out.println("我家已装修好了,太舒服了");

}

} 
仔细看一下这个我写的例子,注意里面的其实,就是装饰类,添加了一个原来类的引用,重写接口,不仅调用了原来的代码,而且还是可以动态添加,删除,整个过程都是透明的。是不是很容易?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值