长春网易网站建设,小程序代理怎么样,wordpress做英文站,投资公司注册需要多少钱现有问题#xff1a; 如何动态的增加功能#xff0c;即对原有功能进行增强。 方案1#xff1a; 利用Java的继承方式来实现#xff0c;但若继承层次过深或者增加功能过多#xff0c;会导致继承爆炸#xff0c;扩展性低#xff0c;后续也很难维护#xff0c;本质上属于继…现有问题 如何动态的增加功能即对原有功能进行增强。 方案1 利用Java的继承方式来实现但若继承层次过深或者增加功能过多会导致继承爆炸扩展性低后续也很难维护本质上属于继承方式 方案2: 组合优于继承的思想使用组合来进行增强。底层就是委托技术。
特点
装饰器类和原始类实现相同的接口或继承相同的父类这样可以实现所谓的套娃功能对原始功能的增强。代理设计模式是对与原始类无关的功能进行增强而装饰器是对跟原始类相关的功能进行的增强。
与代理模式的区别
Proxy模式体现的封装性隐藏细节Decorator模式体现的是动态性显式的增加功能Proxy只能增加一种功能Decorator可以动态的进行多重功能的叠加扩展性好设计者是否感知。若设计者需要感知则使用Decorator模式否则使用Proxy模式Proxy增加的是原始类无关的功能; Decorator增加的是与原始类相关的功能。
优点
动态组合功能。根据不同的条件在运行期可以动态组合不同的功能功能复用。每个装饰器负责一个功能满足单一职责同时也方便功能的复用。 缺点 会产生很多的细粒度对象。
开源框架中的应用
JDK的IO流设计Mybatis中的Cache设计