您的位置:首页 > 编程语言 > Java开发

关于装饰者模式的总结

2019-07-21 07:10 1611 查看

装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。

装饰者模式UML图:

装饰者模式具体例子:

public abstract class Beverage {
String desription = "Unknown Beverage";

public String getDescription(){
return desription;
}
public abstract double cost();

}
public abstract class CondimentDecorator extends Beverage{
public abstract String getDescription();

}
public class DarkRoast extends Beverage {

public DarkRoast(){
desription = "Dark Roast Coffee";
}

@Override
public double cost() {
// TODO Auto-generated method stub
return 2.10;
}

}
public class Espresso extends Beverage {

public Espresso(){
desription = "Espresso";
}

@Override
public double cost() {
// TODO Auto-generated method stub
return 1.99;
}

}
public class HouseBlend extends Beverage {

public HouseBlend(){
desription = "HouseBlend";
}

@Override
public double cost() {
// TODO Auto-generated method stub
return .89;
}

}
public class Mocha extends CondimentDecorator {
Beverage beverage;

public Mocha(Beverage beverage){
this.beverage = beverage;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return beverage.getDescription()+", Mocha";
}

@Override
public double cost() {
// TODO Auto-generated method stub
return .20 + beverage.cost();
}

}
public class Soy extends CondimentDecorator {
Beverage beverage;

public Soy(Beverage beverage){
this.beverage = beverage;
}

public int getSize(){
return beverage.getSize();
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return beverage.getDescription()+", Soy";
}

@Override
public double cost() {
// TODO Auto-generated method stub
return  .10 + beverage.cost();
}

}

使用场景:java.io类

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java