设计模式之抽象工厂模式
3.2 抽象工厂模式
就像每个品牌都拥有自己的系列产品,同时拥有自己的工厂来生产这些产品,一般自己的品牌是不会让其他品牌的工厂生产。大家逛淘宝的时候发现几乎所有的服装品牌都不止是卖衣服,同时还有自己品牌的鞋子包包。这就是品牌系列。
public interface phone {
void call();
}
public interface router {
void connect();
}
//小米产品
public class xiaomiPhone implements phone{
@Override
public void call() {
System.out.println("用小米手机打电话");
}
}
public class xiaomiRouter implements router{
@Override
public void connect() {
System.out.println("小米路由器连接");
}
}
//华为产品
public class huaweiPhone implements phone{
@Override
public void call() {
System.out.println("用华为手机打电话");
}
}
public class huaweiRouter implements router{
@Override
public void connect() {
System.out.println("用华为路由器连接");
}
}
抽象工厂
public interface Factory {
phone createPhone();
router createRouter();
}
小米工厂:
public class xiaomiFactory implements Factory{
@Override
public phone createPhone() {
return new xiaomiPhone();
}
@Override
public router createRouter() {
return new xiaomiRouter();
}
}
华为工厂:
public class huaweiFactory implements Factory{
@Override
public phone createPhone() {
return new huaweiPhone();
}
@Override
public router createRouter() {
return new huaweiRouter();
}
}
测试:
public class test {
public static void main(String[] args) {
//生产小米系列产品
Factory factory1=new xiaomiFactory();
phone xiaomip=factory1.createPhone();
xiaomip.call();
router xiaomir=factory1.createRouter();
xiaomir.connect();
//生产华为系列产品
Factory factory2=new huaweiFactory();
phone huaweip=factory2.createPhone();
huaweip.call();
router huaweir=factory2.createRouter();
huaweir.connect();
}
}
结果:
用小米手机打电话
小米路由器连接
用华为手机打电话
用华为路由器连接
分析:抽象工厂模式结构复杂,代码多,但是它完全避开了创建与使用的分离。
简单工厂模式只有一个工厂。
抽象工厂模式仿佛是再工厂方法之上增加了自己品牌产品。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧