继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!
在不改变现有对象结构的情况下,动态给对象增加某些职责或功能的模式
public abstract class FastFood { private float price; private String description; public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public FastFood(float price, String description) { this.price = price; this.description = description; } public FastFood() { } public abstract float cost();
}
public class FiredRice extends FastFood{ public FiredRice() { super(10,"炒饭"); } @Override public float cost() { return getPrice(); }
}
public class FiredNoodles extends FastFood{ public FiredNoodles() { super(12,"炒面"); } @Override public float cost() { return getPrice(); }
}
**/
public class Egg extends Garnish{ @Override public float cost() {
// 计算价格 鸡蛋+快餐 return getPrice() + getFastFood().cost(); } public Egg(FastFood fastFood) { super(1, "鸡蛋", fastFood); } @Override public String getDescription() { return super.getDescription() + getFastFood().getDescription(); }
}
public class Bacon extends Garnish{ @Override public float cost() {
// 计算价格 培根+快餐 return getPrice() + getFastFood().cost(); } public Bacon(FastFood fastFood) { super(2, "培根", fastFood); } @Override public String getDescription() { return super.getDescription() + getFastFood().getDescription(); }
}
public static void main(String[] args) {
// 点一份炒饭 FastFood firedRice = new FiredRice(); System.out.println(firedRice.getDescription() + firedRice.cost() + "元");
// 上面炒饭加蛋 firedRice = new Egg(firedRice); System.out.println(firedRice.getDescription() + firedRice.cost() + "元");
// 上面炒饭加蛋 firedRice = new Egg(firedRice); System.out.println(firedRice.getDescription() + firedRice.cost() + "元"); // 上面炒饭加培根 firedRice = new Bacon(firedRice); System.out.println(firedRice.getDescription() + firedRice.cost() + "元"); }
public class Demo{
public static void main(String args[]) throw Exception{//创建BufferedWriter对象//创建FileWriter对象FileWriter filWriter = new FileWriter("./a.txt");BufferedWriter bufferedWriter = new BufferedWriter(filWriter);//写数据bufferedWriter.write("hello world");bufferedWriter.close();}
}