资讯专栏INFORMATION COLUMN

装饰器模式(Decorator)

王伟廷 / 3318人阅读

摘要:装饰器模式一装饰器模式定义在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能通过创建一个包装对象装饰,来包裹真实的对象二具体实现创建被装饰对象接口创建被装饰对象创建装饰器抽象类创建具体装饰器调用输出三优缺点优点装饰器模式和继承的共

装饰器模式

一.装饰器模式 1.1 定义

在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能.

通过创建一个包装对象(装饰),来包裹真实的对象.

二.具体实现 1.1 创建被装饰对象接口
    public interface IDecorated {
        void print();
    }
1.2 创建被装饰对象
    public class Decorated implements IDecorated{
        @Override
        public void print() {
            System.out.println("decorated print ...");
        }
    }
1.3 创建装饰器抽象类
    public abstract class Decorator implements IDecorated {
        private IDecorated decorated;
        public Decorator(IDecorated decorated){
            this.decorated = decorated;
        }
        public void print(){
            decorated.print();
        }
    }
1.4 创建具体装饰器
    public class DecoratorA extends Decorator{
        public DecoratorA(IDecorated decorated){
            super(decorated);
        }
        @Override
        public void print() {
            super.print();
            System.out.println("decoratorA print ...");
        }
    }
    public class DecoratorB extends Decorator{
        public DecoratorB(IDecorated decorated){
            super(decorated);
        }
        @Override
        public void print() {
            super.print();
            System.out.println("decoratorB print ...");
        }
    }
1.5 调用
    public static void main(String[] args) {
        IDecorated decorated = new Decorated();
        Decorator decorator = new DecoratorA(decorated);
        decorator.print();
        decorator = new DecoratorB(new DecoratorA(decorated));
        decorator.print();
    }
1.6 输出
    decorated print ...
    decoratorA print ...
    decorated print ...
    decoratorA print ...
    decoratorB print ...
三.优缺点 3.1 优点

装饰器模式和继承的共同特点就是扩展对象的功能,而装饰器模式比继承更加灵活.

通过使用不同的具体装饰器类,及其不同的排列组合,可以产生出大量不同的组合.

3.2 缺点

装饰器模式比继承更加复杂.

会出现一些小类,过度使用会使程序变得复杂.

四.源码
    https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69492.html

相关文章

  • 装饰模式Decorator Pattern)

    摘要:通常有两种方式可以实现给一个类或对象增加行为继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。 装饰模式 (Decorator Pattern) 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种...

    gityuan 评论0 收藏0
  • TS下的装饰模式(Decorator)

    摘要:装饰者模式装饰者模式就是动态的给类或对象增加功能的设计模式。下的实现里的装饰器目前处在建议征集的第二阶段,不被浏览器所支持,如果想要提前使用这个新特性就需要,等工具进行转译。这里介绍下的用法。 1.1、装饰者模式 装饰者模式就是动态的给类或对象增加功能的设计模式。在程序运行时动态的给一个具备基础功能的类或对象添加新的功能,并且不会改变会破坏基础类和对象的功能。先提炼出产品的最小可用产品...

    SolomonXie 评论0 收藏0
  • JavaScript设计模式装饰模式

    摘要:原文博客地址装饰器模式为对象添加新功能不改变其原有的结构和功能。手机壳就是装饰器,没有它手机也能正常使用,原有的功能不变,手机壳可以减轻手机滑落的损耗。 原文博客地址:https://finget.github.io/2018/11/22/decorator/ 装饰器模式 为对象添加新功能;不改变其原有的结构和功能。 手机壳就是装饰器,没有它手机也能正常使用,原有的功能不变,手机壳可以...

    tangr206 评论0 收藏0
  • ES7-Decorator-装饰模式

    摘要:装饰者要实现这些相同的方法继承自装饰器对象创建具体的装饰器,也是接收作对参数接下来我们要为每一个功能创建一个装饰者对象,重写父级方法,添加我们想要的功能。 装饰模式 仅仅包装现有的模块,使之 更加华丽 ,并不会影响原有接口的功能 —— 好比你给手机添加一个外壳罢了,并不影响手机原有的通话、充电等功能; 使用 ES7 的 decorator ES7 中增加了一个 decorator 属性...

    zhangxiangliang 评论0 收藏0

发表评论

0条评论

王伟廷

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<