工厂模式
GOF概括:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
工厂模式
这种代码结构,在项目中非常常见的,很可能不知不觉中,你一直在使用。
比如说:springboot 项目, 既能使用 hibernate,又能使用 mybatis,只需要改 yml 中的配置即可。
如果我们以后写代码,想做这种功能,就可以使用这个代码结构。
interface Product{}
class Button implements Product{}
class Factory{
Product create(String type){
if (type.equals("button")){
return new Button();
} else {
throw new IllegalArgumentException("unknown product!");
}
}
}
抽象工厂
上面这个代码存在一定问题,我们仍然用 springboot 这个例子,
既能使用 hibernate,又能使用 mybatis,如果真的采用上面这种方式实现,会发生什么情况?
这个 Factory 对象要 import 各种各样的依赖,既有 hibernate 的又有 mybatis 的,乱糟糟一团,这显然不是我们想看到的。
想办法优化一下,用抽象工厂模式,把 Factory 类做成 interface;
这样我们就可以 hibernate 一个 Factory,mybatis 一个 Factory,各自管各自的,就很完美。
interface Product{}
class Button implements Product{}
interface Factory{
Product create(String config);
}
class FactoryA implements Factory{
public Product create(String config){
if (config.equals("button")){
return new Button();
} else {
throw new IllegalArgumentException("unknown product!");
}
}
}
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY