设计模式note2:简单工厂模式(非23种之一)

设计:
需求:披萨店后厨做披萨,披萨店卖披萨,消费者买披萨。
通过简单工厂类,将所有的创建(做)披萨对象交给SimpleFactroy

1.pizza抽象类

//设计抽象类:pizza后厨做披萨
abstract class Pizza{
    protected String name;

    //准备原材料:不同披萨不同
    public abstract void prepare();

    //1.切
    public void cut(){
        System.out.println("切蛋糕!");
    }

    //2.烘烤
    public void bake(){
        System.out.println("烘烤蛋糕!");
    }

    //3.打包
    public void box(){
        System.out.println("打包!");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}



2.实现类,两种披萨

//后厨制作GreekPizza
class GreekPizza extends Pizza {

    @Override
    public void prepare() {
        System.out.println("准备希腊蛋糕GreekPizza的原料!");
    }

    public GreekPizza() {
        name = "希腊披萨";
        prepare();
        cut();
        bake();
        box();
    }
}
//后厨制作GreekPizza
class  ChessPizza extends Pizza {

    @Override
    public void prepare() {
        System.out.println("准备起司披萨ChessPizza的原料!");
    }

    public ChessPizza(){
        name = "起司披萨";
        prepare();
        cut();
        bake();
        box();
    }
}

3.披萨商店:订购披萨业务

//订购披萨:披萨商店销售披萨
class OrderPizza{
    String pizzaType;

    //客人要指定需要的披萨
    OrderPizza(String pizzaType){
        this.pizzaType = pizzaType;
    }

    //通过简单工厂类来创建相关披萨
    PizzaSimpleFactory pizzaSimpleFactory = new PizzaSimpleFactory();

    public Pizza getPizza(){
        if ("chessPizza".equals(pizzaType)){
            return pizzaSimpleFactory.getChessPizza();
        }else {
            return pizzaSimpleFactory.getGreekPizza();
        }
    }

}

4.做披萨的类

//简单工厂类:把所有的创建都放在这里进行
public class PizzaSimpleFactory {

    public ChessPizza getChessPizza() {
        return new ChessPizza();
    }

    public GreekPizza getGreekPizza(){
        return new GreekPizza();
    }
}

5.消费者来买披萨

public class Consumer {

    public static void main(String[] args) {
        OrderPizza op = new OrderPizza("chessPizza");
        Pizza pizza = op.getPizza();
        System.out.println("买到了一个"+pizza.name);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值