设计模式-简单工厂模式(静态工厂)
我觉得工厂模式是特别简单的一个模式
说白了就是根据不同的情况实例化并返回不同的对象
给出一个计算器的例子
1 import lombok.Data; 2 3 /** 4 * @author wrj 5 * @description 6 * @Date 2021/12/2 10:16 上午 7 */ 8 9 @Data//我使用了lombok 也可以不用,手动写get,set方法 为了方便阅读 10 //定义抽象父类运算类 11 abstract class Operation{ 12 13 private Long numA; 14 15 private Long numB; 16 17 public abstract Long getResult(); 18 } 19 //加法 20 class addOperation extends Operation{ 21 @Override 22 public Long getResult() { 23 return getNumA()+getNumB(); 24 } 25 } 26 //减法 27 class subtractOperation extends Operation{ 28 @Override 29 public Long getResult() { 30 return getNumA()-getNumB(); 31 } 32 } 33 //运算工厂 34 class OperationFactory{ 35 36 public static Operation getOperation(String operate){ 37 switch (operate){ 38 case "+": 39 return new addOperation(); 40 case "-": 41 return new subtractOperation(); 42 default: 43 throw new RuntimeException("不存在的运算"); 44 } 45 } 46 } 47 //测试 48 public class Factory { 49 50 public static void main(String[] args) { 51 Operation operation = OperationFactory.getOperation("+"); 52 operation.setNumA(3L); 53 operation.setNumB(8L); 54 System.out.println(operation.getResult()); 55 } 56 }
其中,Operation是一个抽象类,定义了两个参数以及抽象的方法,获取结果
之后addOperation和subtractOperation继承了Operation,重写了getResult方法,用于实现自己获取结果的逻辑
OperationFactory是这个模式的核心,用于根据操作符返回对应的操作类
这个例子中这样设计的优点在于
1.如果日后增加其他的操作,比如乘,除,平方,开根各种运算,只需要创建各自的实现了重写getResult方法即可
2.如需要更改加法的实现,只需要更改addOperation类,不必更改其他类的实现,安全
总结:我认为工厂模式的核心就是根据不同的情况返回各种场景所需的东西,这也是使用工厂模式的场景。一般返回的类都继承一个父类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端