Java工厂方法模式详解:实现披萨店案例
Java工厂方法模式详解:实现披萨店案例
工厂方法模式是一种常用的设计模式,它定义了一个用于创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化延迟到子类中进行。
本文将通过一个简单的披萨店案例来演示工厂方法模式的实现。假设我们有一个披萨店,需要生产不同类型的披萨,我们可以使用工厂方法模式来实现。
1. 定义Pizza接口
首先,我们定义一个Pizza接口,它包含了披萨的通用操作,例如准备、烘焙、切片和装盒:
public interface Pizza {
void prepare();
void bake();
void cut();
void box();
}
2. 定义不同类型的披萨
接下来,我们定义不同类型的披萨,例如CheesePizza和PepperoniPizza,它们都实现了Pizza接口:
public class CheesePizza implements 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 PepperoniPizza implements Pizza {
@Override
public void prepare() {
System.out.println('Preparing pepperoni pizza');
}
@Override
public void bake() {
System.out.println('Baking pepperoni pizza');
}
@Override
public void cut() {
System.out.println('Cutting pepperoni pizza');
}
@Override
public void box() {
System.out.println('Boxing pepperoni pizza');
}
}
3. 定义Pizza工厂
现在,我们定义一个PizzaFactory类,它根据客户所需的披萨类型来创建对应的披萨:
public class PizzaFactory {
public Pizza createPizza(String type) {
if (type.equals('cheese')) {
return new CheesePizza();
} else if (type.equals('pepperoni')) {
return new PepperoniPizza();
} else {
return null;
}
}
}
4. 客户端代码
最后,我们在客户端代码中使用PizzaFactory来创建披萨:
public class Client {
public static void main(String[] args) {
PizzaFactory factory = new PizzaFactory();
Pizza cheesePizza = factory.createPizza('cheese');
cheesePizza.prepare();
cheesePizza.bake();
cheesePizza.cut();
cheesePizza.box();
Pizza pepperoniPizza = factory.createPizza('pepperoni');
pepperoniPizza.prepare();
pepperoniPizza.bake();
pepperoniPizza.cut();
pepperoniPizza.box();
}
}
运行以上代码,我们可以输出以下结果:
Preparing cheese pizza
Baking cheese pizza
Cutting cheese pizza
Boxing cheese pizza
Preparing pepperoni pizza
Baking pepperoni pizza
Cutting pepperoni pizza
Boxing pepperoni pizza
5. 总结
工厂方法模式的核心就是将对象的创建和使用分离开来,通过工厂来创建对象,这样我们就可以在不影响客户端代码的情况下,更改对象的创建方式。这种模式可以提高代码的模块化程度,增加代码的扩展性和可维护性。
例如,如果我们要增加一种新的披萨类型,我们只需要添加一个新的披萨类和更新PizzaFactory类,而不需要修改客户端代码。
总而言之,工厂方法模式是一种非常实用的设计模式,它可以帮助我们构建灵活、可扩展和可维护的代码。
原文地址: https://www.cveoy.top/t/topic/mPds 著作权归作者所有。请勿转载和采集!