设计模式之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”));

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭