目录
一、案例需求
我们来看一个具体需求
看一个披萨的项目,要便于披萨种类的扩展,要便于维护,有以下要求:
- 披萨的种类很多(比如GreekPizz、CheesePizz等)
- 披萨的制作有prepare,bake,cut,box
- 完成披萨店订购功能
首先我们先编写一个Pizza
抽象类:
package com.cxc.factory.simplefactory.pizzastore.pizza;
/**
* 抽象Pizza类
*/
public abstract class Pizza {
//Pizza名字
protected String name;
//准备原材料,不同的披萨不一样,因此我们做成抽象方法
public abstract void preable();
//切
public void cut(){
System.out.println("cut");
}
//烘烤
public void bake(){
System.out.println("bake");
}
//打包
public void box(){
System.out.println("box");
}
public void setName(String name) {
this.name = name;
}
}
然后编写不同的种类的披萨类去继承这个抽象类,并实现抽象方法:
package com.cxc.factory.simplefactory.pizzastore.pizza;
public class CheesePizza extends Pizza {
@Override
public void preable() {
System.out.println("给制作奶酪披萨准备原材料");
}
}
package com.cxc.factory.simplefactory.pizzastore.pizza;
public class GreekPizza extends Pizza {
@Override
public void preable() {
System.out.println("给希腊披萨准备原材料");
}
}
接下来是完成披萨订单类,在这里面根据输入的披萨种类的不同来新建不同的披萨对象:
package com.cxc.factory.simplefactory.pizzastore.order;
import com.cxc.factory.simplefactory.pizzastore.pizza.CheesePizza;
import com.cxc.factory.simplefactory.pizzastore.pizza.GreekPizza;
import com.cxc.factory.simplefactory.pizzastore.pizza.Pizza;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class OrderPizza {
public OrderPizza() {
Pizza pizza = null;