代码实现

本文介绍了一个简单的软件实现案例,通过抽象类PizzaStore和其子类NYPizzaStore来模拟经营一家披萨店的过程。文章展示了如何使用面向对象的设计模式来创建不同种类的披萨,并通过具体的代码示例说明了每一步的实现细节。

披萨店

public abstract class PizzaStore{
    public Pizza orderPizza(String type){
        Pizza piaaa;
        pizza = createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }
    abstract Pizza createPizza(String type);
}

开一家披萨店把

public class NYPizzaStore extends PizzaStore{
//createPizza()返回一个Pizza对象,由子类全权负责实例化哪一个具体Pizza
    Pizza createPizza(String item){
        if(item.equals("cheese")){
        //创建具体类
            return new NYStyleCheesePizza();
        }else if(item.equals("veggie")){
            return new NYStyleVeggiePizza();
        }else if(item.equals("clam")){
            return new NYStyleClamPizza();
        }else if(item.equals("pepproni")){
            return new NYStylePepproni();
        }else return null;
    }
}

纽约风味的具体子类

public class NYStyleCheesePizza extends Pizza{
    public NYStyleCheesePizza(){
        name = "NY Style Sauce and Cheese Pizza";
        dough = "Thin Crust Dough";
        sauce = "Marinara Sauce";

        toppings.add("Grated Reggiano Cheese");
    }
}

有了披萨店,该生产披萨了

public abstract class Pizza{
    String name;
    String dough;
    String sauce;
    ArrayList toppings = new ArrayList();

    void prepare(){
        System.out.println("Preparing" + name);
        System.out.println("Tossing dough");
        System.out.println("Adding sauce");
        System.out.println("Adding toppings: ");
        for(int i=0; i<toppings.size(); i++){
            System.out.println("  " + topping.get(i));
        }
    }

    void bake(){
        System.out.println("Bake for 25 minutes at 350");
    }

    void cut(){
        System.out.println("Cutting the pizza into diagonal slices");
    }

    void box(){
        System.out.println("Place pizza in official PizzaStore box");
    }

    public String getName(){
        return name;
    }
}

现在可以吃披萨了

public class PizzaTestDrive{
    public static void main(String[] args){
        PizzaStore nyStore = new NYPizzaStore();

    Pizza pizza = nyStore.orderPizza("cheese");
    System.out.println("Ethan ordered a "+ pizza.getName() + "\n");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值