java2--里氏代换原则【例】

实现一个咖啡厅的点单系统

一杯咖啡+各种调料

使用面向对象的方法编程,并遵循开闭原则

//2012.8.1
//咖啡厅点单系统
public abstract class Beverage{               //咖啡的抽象类
	String name = "unknow";
	String description = "unknow";
	public String getDescription(){
		return description;	
	}
	public String getName(){
		return name;	
	}
	public abstract float cost();
};
class HouseBlend extends Beverage{       //咖啡--实例
	public HouseBlend(){
		name = "HouseBlend";
		description = "HouseBlend Coffee ";
	}	
	public float cost(){
		return 4.0f;	
	}	
};
class Espresso extends Beverage{
	public Espresso(){
		name = "Espresso";
		description = "Espresso Coffee ";
	}
	public float cost(){
		return 1.0f;	
	}	
};
class Decaf extends Beverage{
	public Decaf(){
		name = "Decaf";
		description = "Decaf Coffee ";
	}
	public float cost(){
		return 2.0f;	
	}	
};
class DarkRoast extends Beverage{
	public DarkRoast(){
		name = "DarkRoast";
		description = "DarkRoast Coffee ";
	}
	public float cost(){
		return 3.0f;	
	}	
};

public abstract class Condiment extends Beverage{       //调料的抽象类 继承咖啡抽象类
	public abstract float cost();
};
class Whip extends Condiment{     //调料---实例
	private Beverage beverage = null;
	private int num = 1;
	public Whip(Beverage temp){
		String name = "Whip";
		this.beverage = temp;	
	}
	public Whip(Beverage temp,int i){
		this(temp);
		this.num = i;	
	}
	public String getDescription(){
		return beverage.getDescription() + " + Whip";
	}
	public float cost(){
		return 0.1f*num + beverage.cost();	
	}
};
class Mocha extends Condiment{
	private Beverage beverage = null;
	private int num = 1;
	public Mocha(Beverage temp){
		String name = "Mocha";
		this.beverage = temp;	
	}
	public Mocha(Beverage temp,int i){
		this(temp);
		this.num = i;	
	}
	public String getDescription(){
		return beverage.getDescription() + " + Mocha";
	}
	public float cost(){
		return (0.15f*num + beverage.cost());	
	}
};

public class CoffeeDemo01{
	public static void main(String args[]){
		Beverage a = new Espresso();
		System.out.println("name:" + a.getName());
		Condiment b = new Mocha(a);
		b = new Whip(b);
		System.out.println(b.cost());
		System.out.println(b.getDescription());
	}	
}

由此实现点单系统,返回打印餐品和金额



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值