简单工厂模式
概述
有时我们需要创建一些来自于相同父类的类的实例,为此可以专门定义一个简单工厂类来负责创建这些类的实例,这些被创建的实例具有共同的父类
模式实例
某手机厂专为各手机品牌生产手机,调用工厂的方法时传入参数,则根据传入的不同参数返回不同品牌的手机
在这里手机为父类,各品牌手机则为子类
抽象手机类 Phone
public abstract class Phone {
public abstract void use();
}
具体手机类 HuaweiPhone
public class HuaweiPhone extends Phone {
@Override
public void use() {
System.out.println("华为手机使用中....");
}
}
具体手机类 XiaomiPhone
public class XiaomiPhone extends Phone {
@Override
public void use() {
System.out.println("小米手机使用中....");
}
}
工厂类 PhoneFactory
public class PhoneFactory {
public static Phone producePhone(String brand) {
if(brand.equalsIgnoreCase("huawei")) {
System.out.println("生产华为手机...");
return new HuaweiPhone();
} else if (brand.equalsIgnoreCase("xiaomi")) {
System.out.println("生产小米手机");
return new XiaomiPhone();
} else {
System.out.println("暂无该手机生产....");
return null;
}
}
}
模式优缺点
简单工厂模式优点如下:
- 实现了对责任的分割,客户免除直接创建产品对象的责任,而仅仅消费产品
- 通过引入配置文件,可以在不修改客户端代码的情况下更换和增加新的具体产品类,提高系统灵活性
简单工厂模式缺点如下:
- 工厂类集中了所有产品的创建逻辑,一旦不能正常工作,整个系统都将受到影响
- 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,不利于系统维护
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战