7-简单工厂模式版:造手机
当然可以!下面我们来把“造手机”的例子改写成简单工厂模式,并进行结构清晰、逐步说明,帮你理解它和工厂方法模式、抽象工厂模式的区别。
1. 🏗️ 简单工厂模式版:造手机
1.1. 📌 简单工厂模式是什么?
由一个工厂类负责创建所有产品实例。客户端只要告诉工厂“你要什么”,工厂就帮你创建好并返回。
1.2. 🧠 使用场景设定(沿用手机例子)
我们依旧生产两类手机:
-
Apple 手机:屏幕 + CPU + 系统
-
Samsung 手机:屏幕 + CPU + 系统
但这次我们使用一个统一的工厂类来创建它们的产品,逻辑变简单,集中。
1.3. ✅ Step-by-Step 实现简单工厂
1️⃣ 定义统一的产品接口
interface Product {
void showSpec(); // 显示产品特性
}
2️⃣ 实现具体产品(多个品牌)
class ApplePhone implements Product {
public void showSpec() {
System.out.println("Apple: Retina + A17 + iOS");
}
}
class SamsungPhone implements Product {
public void showSpec() {
System.out.println("Samsung: AMOLED + Exynos + Android");
}
}
3️⃣ 创建简单工厂类
class SimplePhoneFactory {
public static Product createPhone(String type) {
if (type.equalsIgnoreCase("Apple")) {
return new ApplePhone();
} else if (type.equalsIgnoreCase("Samsung")) {
return new SamsungPhone();
} else {
throw new IllegalArgumentException("Unknown phone type: " + type);
}
}
}
4️⃣ 客户端调用
public class PhoneStore {
public static void main(String[] args) {
Product phone1 = SimplePhoneFactory.createPhone("Apple");
Product phone2 = SimplePhoneFactory.createPhone("Samsung");
phone1.showSpec(); // Apple: Retina + A17 + iOS
phone2.showSpec(); // Samsung: AMOLED + Exynos + Android
}
}
1.4. 🎯 简单对比三种工厂模式
模式 | 核心思想 | 工厂结构 | 优点 | 缺点 |
---|---|---|---|---|
简单工厂 | 一个工厂决定创建哪一个具体产品 | 单个工厂类 | 简单、集中 | 不符合开闭原则,难扩展 |
工厂方法 | 每个产品一个工厂类 | 多个工厂类 | 易扩展,符合开闭原则 | 类较多,结构松散 |
抽象工厂 | 创建一整套产品族(多个产品) | 一组产品族工厂类 | 套餐创建一致性强 | 扩展新产品族麻烦 |
1.5. 🧩 总结一句话
✅ 简单工厂:一个工厂管所有手机,“你说个名字我给你造”。
✅ 工厂方法:每个品牌有自己专属工厂,“你要哪个,我去那家工厂造”。
✅ 抽象工厂:每个品牌有一整套产品族,“套餐式造手机”。
如果你需要我把这段内容整理为 Markdown 版本写入 Obsidian,我可以直接给你排版好,马上整~ 😎