装饰者模式

 

GLC:
装饰者模式就是反复用继承 多态 

GLC:
如果我们现有一个类 里面有方法a 我们想对方法a增强 加点别的功能 

GLC:
但是又不想改动原有类A

GLC:
那么 我们可以写个装饰类b 和类A实现同样的接口,或者,继承类A

GLC:
然后,装饰者类B里面,通过持有类A的接口的引用,并且提供构造方法给该引用赋值

GLC:
这一步的目的是,要传进来装饰者B的子类,他们实现了不同的装饰功能,把他们传进来之后,调用他们实现的方法(最终重写的类a的方法),此时已经在具体的装饰类中实现了方法扩展

GLC:
这样的我们每一个装饰类都是独立的

GLC:
而被装饰类A并没有动过

GLC:
而且,装饰类的功能顺序可以调整

GLC:
比较灵活

GLC:
说到这里 仍然不太清楚和代理模式具体区别

GLC:
感觉还是和代理模式挺像

GLC:
那个逼问的这个问题 还挺不好答

GLC:
估计是自己也不会的 或者琢磨很久的

GLC:
装饰模式,说白了就是我想给现有的某个方法加点逻辑,但是我又不想改动原类,那咋整,只能通过继承,我不改你,但是我继承你,然后重写你的方法,重写了之后我还调用你的逻辑,然后接着写我要增强的

GLC:
这里有个点,还运用了多态

GLC:
那就是设计了两级,一级是父类装饰类,而每个具体装饰类都实现了共同的父装饰类,为啥弄个父装饰类呢?这货实现了一个通用的功能,就是持有被增强方法接口引用,setter注入为该引用赋值。吧这个逻辑放到了父类装饰类完成,就不用每个具体装饰类都写了

GLC:
每个具体的装饰类,只专心写自己的增强逻辑即可。

GLC:
[图片]

GLC:
说白了就是封装 继承 多态 

GLC:
java的一切设计模式 都逃不过这三点

张青:
什么场景中会用

GLC:
你需要增强你的某个方法

GLC:
但是你不想改动原有类。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值