夜光带你走进 Java 成神之路(十)擅长的领域

夜光序言:

 

 

平凡的人,简单的生活,却无法驾驭心机的磨练。

 

 

 

 

 

 

 

正文:

                           以道御术 / 以术识道

 

简单工厂模式  →  有的时候,我们也叫作静态工厂模式

 

 

 

 

package 工厂设计模式.案例1升华;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class OrderPizza2 {


    Pizza pizza = null; //先为空
    String orderType = "";

    //夜光:构造器还是需要的
    public OrderPizza2(){  //因为是静态的了,所以就不需要传入工厂对象

       //下面这一部分代码就是完成订购
        do{

            orderType = gettype();  //这个方法

            //因为使用静态方法,所以下面的修改一下
/*            pizza = this.simpleFactory.createPizza(orderType);*/
            pizza = SimpleFactory.createPizza2(orderType);

            //输出披萨
            if (pizza != null){  //如果不为空,则说明是有的,存在这么一个pizza
                pizza.prepare();
                pizza.bake();
                pizza.cut();
                pizza.box();
            }else {
                System.out.println("订购披萨失败");
                break;
            }
        }while(true);
    }

    //写一个方法,可以获取客户希望订购的披萨类型
    private String gettype(){
        try{
            BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("请输入披萨类型:");
            String str = strin.readLine();
            return str;

        }catch (IOException e){

            e.printStackTrace();
            return "";
        }
    }
}

 

 

 

 

 

 

 

 

package 工厂设计模式.工厂方法模式;

import 工厂设计模式.案例1升华.Pizza;
import 工厂设计模式.案例1升华.SimpleFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//会使用到其他几个类
public abstract class OrderPizza {

    //定义一个抽象方法,createPizza,目的是为了让各个工厂子类自己实现
    public abstract Pizza createPizza(String orderType);
        //构造器
    public OrderPizza(){
        Pizza pizza = null;  //第一步
        String orderType;  //订购披萨的类型
        //写一个 do while 循环
        do {
            orderType = gettype();
            pizza = createPizza(orderType); //抽象方法由工厂子类去实现
            //输出披萨制作的过程
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();

        }while (true);
    }



    //写一个方法,可以获取客户希望订购的披萨类型
    private String gettype(){
        try{
            BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("请输入披萨类型:");
            String str = strin.readLine();
            return str;

        }catch (IOException e){

            e.printStackTrace();
            return "";
        }
    }
}

 

package 工厂设计模式.工厂方法模式;



public class BJOrderPizza extends OrderPizza{

    /** 
    * @Description: 仔细看看
    * @Param: [orderType] 
    * @return: 工厂设计模式.案例1升华.Pizza 
    * @Author: Hy
    * @Date: 2019/11/29 
    */ 
    @Override
    public Pizza createPizza(String orderType) {
        //下面我们来操作一下
        Pizza pizza = null;
        if (orderType.equals("cheese")){
            pizza = new BJCheesePizza();
        }else if(orderType.equals("pepper")){
            pizza = new BJPepperPizza();
        }
        return pizza;
    }
}

 

package 工厂设计模式.工厂方法模式;



public class LDOrderPizza extends OrderPizza{

    /** 
    * @Description: 仔细看看
    * @Param: [orderType] 
    * @return:
    * @Author: Hy
    * @Date: 2019/11/29 
    */ 
    @Override
    public Pizza createPizza(String orderType) {
        //下面我们来操作一下
        Pizza pizza = null;
        if (orderType.equals("cheese")){
            pizza = new LDCheesePizza();
        }else if(orderType.equals("pepper")){
            pizza = new LDPepperPizza();
        }
        return pizza;
    }
}
package 工厂设计模式.工厂方法模式;



public class BJOrderPizza extends OrderPizza{

    /** 
    * @Description: 仔细看看
    * @Param: [orderType] 
    * @return:
    * @Author: Hy
    * @Date: 2019/11/29 
    */ 
    @Override
    public Pizza createPizza(String orderType) {
        //下面我们来操作一下
        Pizza pizza = null;
        if (orderType.equals("cheese")){
            pizza = new BJCheesePizza();
        }else if(orderType.equals("pepper")){
            pizza = new BJPepperPizza();
        }
        return pizza;
    }
}

 

package 工厂设计模式.工厂方法模式;

public class PizzaStore {
    public static void main(String[] args) {
        //创建北京口味的各种披萨
        new BJOrderPizza();


    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值