美文网首页
结构型模式-装饰者模式

结构型模式-装饰者模式

作者: 一直想上树的猪 | 来源:发表于2019-07-23 14:07 被阅读0次

概述

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。

适用性

1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

2.处理那些可以撤消的职责。

3.当不能采用生成子类的方法进行扩充时。

参与者

1.Component
定义一个对象接口,可以给这些对象动态地添加职责。

2.ConcreteComponent
定义一个对象,可以给这个对象添加一些职责。

3.Decorator
维持一个指向Component对象的指针,并定义一个与Component接口一致的接口。

4.ConcreteDecorator
向组件添加职责。

类图

装饰者模式

代码实现

1.Component
public interface Person {

    void eat();
}

2.ConcreteComponent
public class Man implements Person {

    public void eat() {
        System.out.println("男人在吃");
    }
}
3.Decorator
public abstract class Decorator implements Person {

    protected Person person;
    
    public void setPerson(Person person) {
        this.person = person;
    }
    
    public void eat() {
        person.eat();
    }
}
4.ConcreteDecorator
public class ManDecoratorA extends Decorator {

    public void eat() {
        super.eat();
        reEat();
        System.out.println("ManDecoratorA类");
    }

    public void reEat() {
        System.out.println("再吃一顿饭");
    }
}
public class ManDecoratorB extends Decorator {
    
    public void eat() {
        super.eat();
        System.out.println("===============");
        System.out.println("ManDecoratorB类");
    }
}

5.Test
public class Test {

    public static void main(String[] args) {
        Man man = new Man();
        ManDecoratorA md1 = new ManDecoratorA();
        ManDecoratorB md2 = new ManDecoratorB();
        
        md1.setPerson(man);
        md2.setPerson(md1);
        md2.eat();
    }
}
5.执行结果
男人在吃
再吃一顿饭
ManDecoratorA类
===============
ManDecoratorB类

相关文章

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • java23种设计模式

    创建型 抽象工厂模式工厂方法建造者模式原型模式单态模式 结构型 适配器模式桥接模式组合模式外观模式装饰者模式享元模...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 2、装饰者模式

    装饰者模式 一、基本概念 二、结构 三、案例1、装饰者模式案例2、JavaIO中使用装饰者模式 四、总结 一、基本...

  • 装饰者模式和代理模式

    装饰者模式和代理模式 装饰者模式 名称:Decorator 分类:结构型模式 意图:动态的为目标对象增加功能,比继...

  • 设计模式之装饰器模式

    也称装饰者模式、装饰器模式、Wrapper、Decorator。 装饰模式是一种结构型设计模式,允许你通过将对象放...

  • 装饰者模式(Decorator Pattern)

    装饰者模式:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更具弹性的替代方案。 装饰者模式是结构型模式...

  • PHP常用设计模式

    # 创建型 单例模式 工厂模式 工厂抽象模式 原型模式 建造者模式 # 结构型 # 行为型 # 3.注册模式 # ...

  • 设计模式~装饰器-[Android_YangKe]

    装饰器模式: 装饰器模式(Decorator Pattern)又名装饰者,是项目中比较常用的一种设计模式(结构型模...

网友评论

      本文标题:结构型模式-装饰者模式

      本文链接:https://www.haomeiwen.com/subject/epbolctx.html