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

来源:互联网 发布:电信卡网络不好怎么办 编辑:程序博客网 时间:2024/06/06 13:55

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

一杯咖啡+各种调料

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

//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());}}

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