IT评测·应用市场-qidao123.com
标题:
计划模式之抽象工厂模式
[打印本页]
作者:
愛在花開的季節
时间:
2025-3-20 08:25
标题:
计划模式之抽象工厂模式
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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4