1.创建抽象产物的接口
- // 手机的标准功能
- interface Phone {
- void call(); // 必须能打电话
- }
- // 耳机的标准功能
- interface Earphone {
- void playSound(); // 必须能播放声音
- }
复制代码 作用:
- 界说产物的 同一尺度(好比所有手机都必须能打电话)
- 让不同品牌的产物 服从雷同规则,好比苹果和华为的手机都必须实现 call() 方法
2.详细产物实现
2.1.苹果牌的电话和耳机
- // 苹果手机
- class iPhone implements Phone {
- @Override
- public void call() {
- System.out.println("iPhone 打电话");
- }
- }
- // 苹果耳机
- class AirPods implements Earphone {
- @Override
- public void playSound() {
- System.out.println("AirPods 播放音乐");
- }
- }
复制代码 作用:
- 实现抽象接口,给出苹果产物的详细功能
- 好比 iPhone 的 call() 方法打印自己的特色信息
2.2.华为牌的手机和耳机
- // 华为手机
- class MatePhone implements Phone {
- @Override
- public void call() {
- System.out.println("华为 MatePhone 打电话");
- }
- }
- // 华为耳机
- class FreeBuds implements Earphone {
- @Override
- public void playSound() {
- System.out.println("华为 FreeBuds 播放音乐");
- }
- }
复制代码 作用:
- 同上,但实现的是 华为品牌 的详细功能
- 不同品牌的产物 实现雷同接口,但细节不同(好比打印的品牌名称)
3.抽象工厂接口
- interface TechFactory {
- Phone createPhone(); // 工厂能生产手机
- Earphone createEarphone(); // 工厂能生产耳机
- }
复制代码 作用:
- 界说工厂的 能力,好比每个工厂必须能生产手机和耳机
- 确保不同品牌的工厂 生产同一套产物(好比苹果工厂生产手机+耳机,华为工厂也生产手机+耳机)
4.实现抽象工厂
4.1.苹果工厂
- class AppleFactory implements TechFactory {
- @Override
- public Phone createPhone() {
- return new iPhone(); // 生产苹果手机
- }
- @Override
- public Earphone createEarphone() {
- return new AirPods(); // 生产苹果耳机
- }
- }
复制代码 作用:
- 实现抽象工厂,详细生产苹果的产物
- 当调用 createPhone() 时,返回 iPhone 对象
4.2.华为工厂
- class HuaweiFactory implements TechFactory {
- @Override
- public Phone createPhone() {
- return new MatePhone(); // 生产华为手机
- }
- @Override
- public Earphone createEarphone() {
- return new FreeBuds(); // 生产华为耳机
- }
- }
复制代码 作用:
- 同上,但生产的是华为的产物
- 当调用 createEarphone() 时,返回 FreeBuds 对象
5.用户
- public class Client {
- public static void main(String[] args) {
- // 选择苹果工厂
- TechFactory appleFactory = new AppleFactory();
- Phone myPhone = appleFactory.createPhone();
- Earphone myEarphone = appleFactory.createEarphone();
- myPhone.call(); // 输出:iPhone 打电话
- myEarphone.playSound(); // 输出:AirPods 播放音乐
- // 选择华为工厂
- TechFactory huaweiFactory = new HuaweiFactory();
- Phone hwPhone = huaweiFactory.createPhone();
- Earphone hwEarphone = huaweiFactory.createEarphone();
- hwPhone.call(); // 输出:华为 MatePhone 打电话
- hwEarphone.playSound(); // 输出:华为 FreeBuds 播放音乐
- }
- }
复制代码 关键逻辑:
- 用户只需 选择一个工厂(好比 AppleFactory),就能得到 配套的同一品牌产物
- 完全不消关心 iPhone 或 MatePhone 的详细实现细节
总结
总结各部门的协作关系
- 抽象产物(接口)界说规则 → 详细产物(类)实现规则
- 抽象工厂(接口)界说能力 → 详细工厂(类)实现生产
- 用户通过选择工厂 → 获得整套配套产物
扩展性示例(加一个小米工厂)
如果未来要新增 小米品牌,只需:
- 创建 XiaomiPhone 和 XiaomiEarphone 类(实现 Phone 和 Earphone 接口)
- 创建 XiaomiFactory 类(实现 TechFactory 接口)
- 原有代码完全不消修改
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |