工厂模式,java实现设计一个披萨项目,要求便于披萨种类的拓展,便于维护,实现GreekPizza和CheesePizza两种披萨,披萨的制作有prepare,bake,cut,box
时间: 2024-06-14 11:06:08 浏览: 141
以下是一个使用工厂模式实现披萨项目的Java代码示例:
```java
// 抽象披萨类
public abstract class Pizza {
public abstract void prepare();
public abstract void bake();
public abstract void cut();
public abstract void box();
}
// Greek披萨类
public class GreekPizza extends Pizza {
@Override
public void prepare() {
System.out.println("Preparing Greek Pizza");
}
@Override
public void bake() {
System.out.println("Baking Greek Pizza");
}
@Override
public void cut() {
System.out.println("Cutting Greek Pizza");
}
@Override
public void box() {
System.out.println("Boxing Greek Pizza");
}
}
// Cheese披萨类
public class CheesePizza extends Pizza {
@Override
public void prepare() {
System.out.println("Preparing Cheese Pizza"); }
@Override
public void bake() {
System.out.println("Baking Cheese Pizza");
}
@Override
public void cut() {
System.out.println("Cutting Cheese Pizza");
}
@Override
public void box() {
System.out.println("Boxing Cheese Pizza");
}
}
// 披萨工厂类
public class PizzaFactory {
public Pizza createPizza(String type) {
Pizza pizza = null;
if (type.equals("Greek")) {
pizza = new GreekPizza();
} else if (type.equals("Cheese")) {
pizza = new CheesePizza();
}
return pizza;
}
}
// 测试代码
public class PizzaTest {
public static void main(String[] args) {
PizzaFactory factory = new PizzaFactory();
Pizza greekPizza = factory.createPizza("Greek");
greekPizza.prepare();
greekPizza.bake();
greekPizza.cut();
greekPizza.box();
Pizza cheesePizza = factory.createPizza("Cheese");
cheesePizza.prepare();
cheesePizza.bake();
cheesePizza.cut();
cheesePizza.box();
}
}
```
这个示例中,我们使用了工厂模式来创建披萨对象。抽象类`Pizza`定义了披萨的制作过程,而具体的披萨类`GreekPizza`和`CheesePizza`继承了抽象类并实现了具体的制作步骤。`PizzaFactory`是一个工厂类,根据传入的披萨类型来创建相应的披萨对象。
这样设计的好处是,当需要添加新的披萨种类时,只需要创建一个新的披萨类并在工厂类中添加相应的逻辑即可,不需要修改已有的代码。同时,通过使用抽象类和继承,可以方便地对披萨的制作过程进行拓展和维护。
阅读全文