设计模式之工厂模式
1、设计模式历史
设计模式,是一种开发过程中总结出来的代码设计思想,使用他们可以提高代码的复用性,可扩展性和可维护性。
设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书。这四人也被称为四人帮(GoF)
所以设计模式也称为GoF23。
GoF将23种设计模式分为:创建型,结构型,行为型。
2、OOP七大原则
- 开闭原则:对扩展开放,对修改关闭
- 里氏替换原则:如果调用父类的方法可以成功,那么换成子类也可以成功
- 接口分离原则:尽量不使用实现类,而是通过接口访问。
- 单一职责原则:控制粒度大小,使接口的职责简单,高内聚性。
- 依赖倒置原则:为每个类设计需要的专用接口
- 迪米特法则:只与直接朋友交流,不与陌生人说话。
- 合成复用原则:先考虑组合或聚合的关联关系实现,其次再考虑继承。
3、创建型
3.1 工厂模式
简单工厂模式
假设要生产有一些车
public interface car {
void name();
}
public class dazhong implements car{
@Override
public void name() {
System.out.println("大众");
}
}
public class hongQi implements car{
@Override
public void name() {
System.out.println("红旗");
}
}
通过简单工厂模式生产,只需要一个工厂
问题:如果想要增加一个新的五菱汽车,则需要修改原有代码,不符合开闭原则
//简单工厂模式
public class factoryCar {
public car createCar(String name){
if(name.equals("红旗")){
return new hongQi();
}
else if(name.equals("大众")){
return new dazhong();
}else {
return new dazhong();
}
}
}
public class consumer {
public static void main(String[] args) {
car car1 = new factoryCar().createCar("红旗");
car car2 = new factoryCar().createCar("大众");
car1.name();
car2.name();
}
}
工厂方法模式
思路是:每种车子都有一个自己的工厂实现了工厂类
public interface factory {
car create();
}
public class dazhongFactory implements factory{
@Override
public car create() {
return new dazhong();
}
}
public class hongQiFactory implements factory{
@Override
public car create() {
return new hongQi();
}
}
public class consumer {
public static void main(String[] args) {
car car1 = new hongQiFactory().create();
car car2 = new dazhongFactory().create();
car1.name();
car2.name();
}
}
总结:
简单工厂模式:代码更简单,但是不符合开闭原则。在实际开发中使用多。
工厂方法模式:符合开闭原则,但是代码复杂且多,将会不断增加代码量。实际使用却少。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧