夜光序言:
平凡的人,简单的生活,却无法驾驭心机的磨练。
正文:
以道御术 / 以术识道
简单工厂模式 → 有的时候,我们也叫作静态工厂模式
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();
}
}