设计模式-装饰者模式

Posted bosslv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-装饰者模式相关的知识,希望对你有一定的参考价值。

  1. 定义
    装饰者模式动态地将责任责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
  2. 实现要点
    装饰器与被装饰的类需要继承自相同接口,来达到类型匹配。装饰器持有被装饰的类的实例。
  3. 代码实例

    /**
     * 基础组件
     */
    abstract class Beverage 
    
        private String description = "Unknown Beverage";
    
        public String getDescription() 
            return description;
        
    
        public void setDescription(String description) 
            this.description = description;
        
    
        public abstract double cost();
    
    
    /**
     * 装饰器基类
     */
    abstract class Decorator extends Beverage 
    
        @Override
        public abstract String getDescription();
    
    
    /**
     * 被装饰的类
     */
    class Espresso extends Beverage 
    
        public Espresso() 
            setDescription("Espresso");
        
    
        @Override
        public double cost() 
            return 1.99;
        
    
    
    /**
     * 装饰器
     */
    class Mocha extends Decorator 
    
        private Beverage beverage;
    
        public Mocha(Beverage beverage) 
            this.beverage = beverage;
        
    
        @Override
        public double cost() 
            return beverage.cost() + 0.29;
        
    
        @Override
        public String getDescription() 
            return beverage.getDescription() + ", Mocha";
        
    
    
    class CoffeeTest 
        public static void main(String[] args) 
            Beverage beverage = new Espresso();
            beverage = new Mocha(beverage);
    
            System.out.println(beverage.getDescription() + " " + beverage.cost());
        
    

以上是关于设计模式-装饰者模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式装饰者模式

装饰者模式

设计模式学习_装饰者模式

设计模式 - 装饰者模式详解

设计模式整理_装饰者模式

设计模式---装饰者模式