以披萨店为例,我们可以应用简单工厂模式来创建不同种类的披萨。在这个例子中,我们定义一个Pizza
接口和几种实现这个接口的披萨类(如CheesePizza
、PepperoniPizza
和VeggiePizza
),然后通过一个简单工厂类来创建这些具体的披萨实例。
步骤 1: 定义披萨接口和具体的披萨类
首先,定义一个披萨接口和几个具体的披萨类:
java
// 披萨接口
public interface Pizza {
void prepare();
void bake();
void cut();
void box();
}
// 奶酪披萨
class CheesePizza implements Pizza {
public void prepare() {
System.out.println("准备奶酪披萨");
}
public void bake() {
System.out.println("烘焙奶酪披萨");
}
public void cut() {
System.out.println("切割奶酪披萨");
}
public void box() {
System.out.println("装盒奶酪披萨");
}
}
// 意大利辣味香肠披萨
class PepperoniPizza implements Pizza {
public void prepare() {
System.out.println("准备意大利辣味香肠披萨");
}
public void bake() {
System.out.println("烘焙意大利辣味香肠披萨");
}
public void cut() {
System.out.println("切割意大利辣味香肠披萨");
}
public void box() {
System.out.println("装盒意大利辣味香肠披萨");
}
}
// 素食披萨
class VeggiePizza implements Pizza {
public void prepare() {
System.out.println("准备素食披萨");
}
public void bake() {
System.out.println("烘焙素食披萨");
}
public void cut() {
System.out.println("切割素食披萨");
}
public void box() {
System.out.println("装盒素食披萨");
}
}
步骤 2: 创建简单工厂类
然后,定义一个简单工厂类来根据传入的参数决定创建哪种披萨:
java
public class SimplePizzaFactory {
// 根据类型创建披萨的方法
public Pizza createPizza(String type) {
Pizza pizza = null;
switch (type) {
case "cheese":
pizza = new CheesePizza();
break;
case "pepperoni":
pizza = new PepperoniPizza();
break;
case "veggie":
pizza = new VeggiePizza();
break;
}
return pizza;
}
}
步骤 3: 客户端使用简单工厂类
最后,客户端代码可以使用这个工厂来获取不同类型的披萨实例:
java
public class PizzaStore {
private SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory) {
this.factory = factory;
}
public Pizza orderPizza(String type) {
Pizza pizza = factory.createPizza(type);
if (pizza != null) {
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
}
return pizza;
}
public static void main(String[] args) {
SimplePizzaFactory factory = new SimplePizzaFactory();
PizzaStore store = new PizzaStore(factory);
Pizza cheesePizza = store.orderPizza("cheese");
System.out.println("订购了一份奶酪披萨\n");
Pizza veggiePizza = store.orderPizza("veggie");
System.out.println("订购了一份素食披萨\n");
}
}
在这个例子中,SimplePizzaFactory
充当了简单工厂的角色,负责创建不同类型的
披萨对象。PizzaStore
是客户端,它通过工厂来获取披萨实例。这样,披萨的创建过程和客户端的代码被解耦,增加或修改披萨类型时,只需要修改工厂类即可,客户端代码不需要改变。以披萨店为例,我们可以应用简单工厂模式来创建不同种类的披萨。在这个例子中,我们定义一个Pizza
接口和几种实现这个接口的披萨类(如CheesePizza
、PepperoniPizza
和VeggiePizza
),然后通过一个简单工厂类来创建这些具体的披萨实例。
步骤 1: 定义披萨接口和具体的披萨类
首先,定义一个披萨接口和几个具体的披萨类:
java
// 披萨接口
public interface Pizza {
void prepare();
void bake();
void cut();
void box();
}
// 奶酪披萨
class CheesePizza implements Pizza {
public void prepare() {
System.out.println("准备奶酪披萨");
}
public void bake() {
System.out.println("烘焙奶酪披萨");
}
public void cut() {
System.out.println("切割奶酪披萨");
}
public void box() {
System.out.println("装盒奶酪披萨");
}
}
// 意大利辣味香肠披萨
class PepperoniPizza implements Pizza {
public void prepare() {
System.out.println("准备意大利辣味香肠披萨");
}
public void bake() {
System.out.println("烘焙意大利辣味香肠披萨");
}
public void cut() {
System.out.println("切割意大利辣味香肠披萨");
}
public void box() {
System.out.println("装盒意大利辣味香肠披萨");
}
}
// 素食披萨
class VeggiePizza implements Pizza {
public void prepare() {
System.out.println("准备素食披萨");
}
public void bake() {
System.out.println("烘焙素食披萨");
}
public void cut() {
System.out.println("切割素食披萨");
}
public void box() {
System.out.println("装盒素食披萨");
}
}
步骤 2: 创建简单工厂类
然后,定义一个简单工厂类来根据传入的参数决定创建哪种披萨:
java
public class SimplePizzaFactory {
// 根据类型创建披萨的方法
public Pizza createPizza(String type) {
Pizza pizza = null;
switch (type) {
case "cheese":
pizza = new CheesePizza();
break;
case "pepperoni":
pizza = new PepperoniPizza();
break;
case "veggie":
pizza = new VeggiePizza();
break;
}
return pizza;
}
}
步骤 3: 客户端使用简单工厂类
最后,客户端代码可以使用这个工厂来获取不同类型的披萨实例:
java
public class PizzaStore {
private SimplePizzaFactory factory;
public PizzaStore(SimplePizzaFactory factory) {
this.factory = factory;
}
public Pizza orderPizza(String type) {
Pizza pizza = factory.createPizza(type);
if (pizza != null) {
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
}
return pizza;
}
public static void main(String[] args) {
SimplePizzaFactory factory = new SimplePizzaFactory();
PizzaStore store = new PizzaStore(factory);
Pizza cheesePizza = store.orderPizza("cheese");
System.out.println("订购了一份奶酪披萨\n");
Pizza veggiePizza = store.orderPizza("veggie");
System.out.println("订购了一份素食披萨\n");
}
}
在这个例子中,SimplePizzaFactory
充当了简单工厂的角色,负责创建不同类型的
披萨对象。PizzaStore
是客户端,它通过工厂来获取披萨实例。这样,披萨的创建过程和客户端的代码被解耦,增加或修改披萨类型时,只需要修改工厂类即可,客户端代码不需要改变。