structure:装饰器模式 (Decorate Pattern)
- UID
- 1066743
|
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;
}
} |
|
|
|
|
|