工厂设计模式(Factory Pattern)
背景介绍:
在小胖子的程序世界里,披萨店的生意愈发兴隆,但随着顾客越来越多,小胖子发现自己难以应付每个人的口味需求。为了解决这个问题,他决定引入一个新的角色,外号叫做猥琐的披萨顾问。猥琐自称是披萨界的行家里手,对各种各样的披萨口味了如指掌。
设计模式应用:
简单工厂模式
小胖子决定使用简单工厂模式,让猥琐负责根据顾客的口味需求制作不同种类的披萨。这样,小胖子只需要告诉猥琐他想要什么口味的披萨,猥琐就会为他制作出完美的披萨。
代码示例:
// 披萨接口
public interface Pizza {
String prepare();
}
// 芝士披萨类
public class CheesePizza implements Pizza {
@Override
public String prepare() {
return "制作芝士披萨";
}
}
// 海鲜披萨类
public class SeafoodPizza implements Pizza {
@Override
public String prepare() {
return "制作海鲜披萨";
}
}
// 简单工厂类
public class SimplePizzaFactory {
public Pizza createPizza(String type) {
if ("cheese".equals(type)) {
return new CheesePizza();
} else if ("seafood".equals(type)) {
return new SeafoodPizza();
} else {
throw new IllegalArgumentException("未知类型的披萨");
}
}
}
// 客户端
public class PizzaClient {
public static void main(String[] args) {
SimplePizzaFactory pizzaFactory = new SimplePizzaFactory();
Pizza pizza = pizzaFactory.createPizza("cheese");
System.out.println(pizza.prepare());
}
}
抽象工厂模式
为了更好地满足不同顾客的需求,小胖子决定引入抽象工厂模式。他请猥琐带着他的助手涛涛,成立了一个“创意披萨工坊”。猥琐负责设计各种独特的披萨口味,而涛涛负责制作。
代码示例:
// 抽象工厂接口
public interface PizzaFactory {
Pizza createPizza();
}
// 芝士披萨工厂
public class CheesePizzaFactory implements PizzaFactory {
@Override
public Pizza createPizza() {
return new CheesePizza();
}
}
// 海鲜披萨工厂
public class SeafoodPizzaFactory implements PizzaFactory {
@Override
public Pizza createPizza() {
return new SeafoodPizza();
}
}
// 客户端
public class PizzaClient {
public static void main(String[] args) {
PizzaFactory cheesePizzaFactory = new CheesePizzaFactory();
Pizza cheesePizza = cheesePizzaFactory.createPizza();
System.out.println(cheesePizza.prepare());
PizzaFactory seafoodPizzaFactory = new SeafoodPizzaFactory();
Pizza seafoodPizza = seafoodPizzaFactory.createPizza();
System.out.println(seafoodPizza.prepare());
}
}
在这个例子中,小胖子通过引入猥琐这个披萨顾问,成功地将工厂模式应用到了披萨店的经营中。猥琐的出现让小胖子能够更好地满足顾客的需求,提供更多口味的披萨。