工厂方法模式
介绍
工厂方法模式定义了一个用于创建对象的接口,由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
在工厂方法模式中,创建对象的工作由具体的工厂类来完成,客户端只需要知道所需产品的具体工厂,而无需关心创建细节。
示例
下面是一个简单的工厂方法模式的示例代码:
// 抽象产品类 interface Product { void use(); } // 具体产品类 A class ProductA implements Product { public void use() { System.out.println("Product A is used."); } } // 具体产品类 B class ProductB implements Product { public void use() { System.out.println("Product B is used."); } } // 抽象工厂类 interface Factory { Product createProduct(); } // 具体工厂类 A class FactoryA implements Factory { public Product createProduct() { return new ProductA(); } } // 具体工厂类 B class FactoryB implements Factory { public Product createProduct() { return new ProductB(); } } // 客户端代码 public class Client { public static void main(String[] args) { Factory factoryA = new FactoryA(); Product productA = factoryA.createProduct(); productA.use(); Factory factoryB = new FactoryB(); Product productB = factoryB.createProduct(); productB.use(); } }
在上面的代码中,Product
是抽象产品类,它定义了产品对象的通用接口。ProductA
和ProductB
是具体的产品类,它们实现了Product
接口。
Factory
是抽象工厂类,它定义了创建产品的接口。FactoryA
和FactoryB
是具体的工厂类,它们实现了Factory
接口,并提供了创建产品的方法。
在客户端代码中,我们首先创建了两个工厂对象factoryA
和factoryB
,然后分别调用它们的createProduct()
方法来创建对应的产品对象。最后,我们调用产品对象的use()
方法来使用产品。
工厂方法模式使得客户端代码不必关心产品对象的创建细节,只需要知道所需产品的具体工厂即可。和简单工厂模式相比,工厂方法模式可以更方便地扩展新产品,比如,如果我们需要添加一个新的产品类ProductC
,只需要创建一个新的工厂类FactoryC
,并实现createProduct()
方法即可,而不需要修改原有工厂类。
工厂方法模式很好地体现了“对扩展开放,对修改关闭”的设计原则。
应用
参考:ChatGPT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!