首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

structure:装饰器模式 (Decorate Pattern)

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;
        }
}
返回列表