有一个小吃店,餐牌如下:
|
素面 10元 |
加牛肉 5元 |
|
素粉 9元 |
加猪肉 3元 |
|
|
加蛋 2元 |
Breakfast.java
package Eat;
public abstract class Breakfast {
String name = "点餐";
public String getName() {
return name;
}
public abstract double price() ;
}
Mian.java
package Eat;
public class Mian extends Breakfast {
String name="素面";
public String getName() {
return name;
}
@Override
public double price() {
// TODO Auto-generated method stub
return 10;
}
}
Fen.java
package Eat;
public class Fen extends Breakfast {
String name="素粉";
public String getName() {
return name;
}
@Override
public double price() {
// TODO Auto-generated method stub
return 9;
}
}
PeiLiao.java
package Eat;
public class PeiLiao extends Breakfast {
private Breakfast breakfast;
public PeiLiao(Breakfast breakfast) {
this.breakfast=breakfast;
}
public String getName() {
return breakfast.getName();
}
public double price() {
return breakfast.price();
}
}
Beef.java
package Eat;
public class Beef extends PeiLiao {
public Beef(Breakfast breakfast) {
super(breakfast);
}
public String getName() {
return super.getName()+"+牛肉"; //调用原有业务方法
}
public double price() {
return super.price()+5; //调用原有业务方法
}
}
Egg.java
package Eat;
public class Egg extends PeiLiao {
public Egg(Breakfast breakfast) {
super(breakfast);
}
public String getName() {
return super.getName()+"+鸡蛋"; //调用原有业务方法
}
public double price() {
return super.price()+2; //调用原有业务方法
}
}
Pork.java
package Eat;
public class Pork extends PeiLiao {
public Pork(Breakfast breakfast) {
super(breakfast);
}
public String getName() {
return super.getName()+"+猪肉"; //调用原有业务方法
}
public double price() {
return super.price()+3; //调用原有业务方法
}
}
Client.java
package Eat;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Breakfast a,b,c,d;
a=new Mian();
b=new Beef(a);
c=new Pork(b);
d=new Egg(c);
System.err.println("点餐:"+d.getName());
System.err.println("价格:¥"+d.price());
}
}
运行截图:

这篇博客介绍了如何利用装饰模式来丰富小吃店的早餐选择。通过Breakfast、Mian、Fen、PeiLiao等类的设计,可以灵活地为面条和粉类添加牛肉、鸡蛋或猪肉等配料,实现早餐的个性化定制。示例代码展示了如何在Client.java中组合不同的食品和配料,以满足不同顾客的需求。

4002

被折叠的 条评论
为什么被折叠?



