7-简单工厂模式版:造手机

当然可以!下面我们来把“造手机”的例子改写成简单工厂模式,并进行结构清晰、逐步说明,帮你理解它和工厂方法模式抽象工厂模式的区别。


1. 🏗️ 简单工厂模式版:造手机


1.1. 📌 简单工厂模式是什么?

由一个工厂类负责创建所有产品实例。客户端只要告诉工厂“你要什么”,工厂就帮你创建好并返回。


1.2. 🧠 使用场景设定(沿用手机例子)

我们依旧生产两类手机:

但这次我们使用一个统一的工厂类来创建它们的产品,逻辑变简单,集中。


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,我可以直接给你排版好,马上整~ 😎