Board logo

标题: structure:装饰器模式 (Decorate Pattern) [打印本页]

作者: look_w    时间: 2019-4-12 16:47     标题: structure:装饰器模式 (Decorate Pattern)

定义:
动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

    解决继承滥用的问题,类设计死板,类数量膨胀,以及基类的新功能不适用于所有的类。
    符合开放-封闭原则
    缺点:会形成很多的小类,如果不熟悉装饰器模式,可能会对程序员造成一些困扰。
    设计思想:
    设计一个主体,然后设计一些装饰器,在运行时来装饰它。
    装饰器体现的是“包装”的思想,一层一层包装。每层的类型都一致,因为继承同一个基类。

实现:

    package Decorate;
     
    /*
    / 饮料的基类,抽象组件,有点最终产品的意思,负责定义行为与描述。
     */
    public abstract class Beverage {
        String description="Unknown Beverage";
     
        public String getDescription() {
            return description;
        }
     
        public abstract double cost();
    }

    package Decorate;
     
    /*
    调料类,抽象装饰者,声明用来声明半成品的描述的意思
     */
    public abstract class CondimentDecorator extends  Beverage{
        @Override
        public abstract String getDescription();
    }

    package Decorate;
     
    public class DarkRoast extends Beverage {
        //深焙咖啡
        public DarkRoast() {
            description="DarkRost";
        }
     
        @Override
        public double cost() {
            return 0.99;
        }
    }

    package Decorate;
     
    public class Decat extends Beverage {
     
        public Decat() {
            description="Decat";
        }
     
        @Override
        public double cost() {
            return 1.05;
        }
}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0