设计模式之Decorator

Decorator(装饰模式)的应用场景:

   1. 想要增加多个机能,且这些要追加的机能能够自由的组合

   2.想要增加某个处理,但不想改变原来的接口

 


 

技术要点

    使用继承+聚合

 

 


 

举例说明

   现在有几个对参数check的类 Parameter里有getName, getValue, setName, setValue, 还有一个validate方法,

子类的xxxCheck overite validate方法提供具体的check机能,假如现在已有MinLengthCheck和MaxLengthCheck两个check,

先要追加a<x<b类似的check,那么,我们不需要从Parameter继承一个class,全部重写MinLengthCheck和MaxLengthCheck的逻辑,

只需要继承的同时,聚合MinLengthCheck和MaxLengthCheck类,就能通过组合现有的类的机能去提供新的技能,而且这种组合是随机应变的,不会出现组合爆炸。

 

 

 

                        Parameter

           _________△__________________

                      |                  |                                    |

                      |                  |                                    |

MinMaxLenghtCheck     MinLengthCheck  MaxLengthCheck

                  ◇                          ^                          ^

            |                           |                            |

                     |                           |                            |

                     |_____________ |______________|

 


 

JDK中的应用

    java.io包下的类,基本采用这个模式设计,所以你可以

   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(“c://test.txt”));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值