当前位置: 首页 > news >正文

简单工厂模式

摘自《大话设计模式》(程杰 著)

面向对象的分析设计编程思想:通过封装、继承、多态把程序的耦合度降低。
让业务逻辑与界面逻辑分开,让它们之间的耦合度下降,容易维护或扩展。​

计算器控制台程序,要求输入两个数和运算符号,得到结果。

如果需要更改某一运算,我们只需要改对应的OperationXXX子类。
如果需要增加各种复杂运算,比如平方根,立方根,自然对数,正弦余弦等,只要增加相应的运算子类,并在运算类工厂switch中增加分支。
如果需要改界面,不会影响到运算。

image

Operation.cs

把加减乘除都写成运算类的子类,继承它后,重写GetResult()方法。
这样如果要修改任何一个算法,就不需要提供其他算法的代码。

public class Operation
{private double _numberA = 0;private double _numberB = 0;public double NumberA{get { return _numberA; }set { _numberA = value; }}public double NumberB{get { return _numberB; }set { _numberB = value; }}public virtual double GetResult(){double result = 0;return result;}
}class OperationAdd: Operation
{public override double GetResult(){double result = 0;result = NumberA + NumberB;return result;}
}class OperationSub : Operation
{public override double GetResult(){double result = 0;result = NumberA - NumberB;return result;}
}class OperationMul : Operation
{public override double GetResult(){double result = 0;result = NumberA * NumberB;return result;}
}class OperationDiv : Operation
{public override double GetResult(){double result = 0;if (NumberB == 0)throw new Exception("除数不能为0");result = NumberA / NumberB;return result;}
}

OperationFactory.cs

用一个单独的类来做这个创造实例的过程。
只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现了计算器的结果。

public class OperationFactory
{public static Operation createOperate(string operate){Operation oper = null;switch (operate){case "+":oper = new OperationAdd();break;case "-":oper = new OperationSub();break;case "*":oper = new OperationMul();break;case "/":oper = new OperationDiv();break;}return oper;}
}

Program.cs

Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.Write(result);
http://www.zskr.cn/news/76800.html

相关文章:

  • 如何保证消息顺序?
  • 【触想智能】工控一体机在电力行业上的应用特点
  • 2025西南地区公园标识品牌推荐:4家靠谱厂商助你解决导视痛
  • 2025义乌结汇公司推荐指南跨境贸易企业的优选清单
  • 智能安全帽选购指南:看厂家规模、定制工艺与产品舒适度的综合考
  • 智能安全帽选购指南:哪个厂家的产品更优质靠谱?
  • 2025香港读研中介机构哪家好
  • 2025香港留学机构哪个好
  • 2025年12月玻璃反应釜厂家权威推荐榜:机械搅拌/顶入式/真空防腐/制药化工专用/双层单层夹套升降式,匠心工艺与高效稳定之选
  • 2025新加坡申请留学哪个机构好
  • 温州博士安全锁具:靠谱之选,口碑载道
  • 进口拉断阀品牌推荐:曼太柯是卓越之选
  • 2025新加坡口碑好的留学机构
  • 2025新加坡留学机构排名前十名
  • 怎样方便快捷的把录音转成文字?
  • 20232412 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 2025 年 12 月铁盒厂家权威推荐榜:食品/保健品/化妆品/茶叶/月饼/马口铁盒,匠心工艺与定制设计深度解析
  • 2025年市场最好的家电微动开关制造商口碑推荐榜,汽车微动开关/电动推杆微动开关/小型微动开关/中型微动开关制造企业推荐榜单
  • 批量文件重命名工具---如何快速给大量文件用编号命名
  • 2025年目前耐用的防水微动开关源头厂家有哪些,小型微动开关/新能源微动开关/微动开关/中型微动开关/家电微动开关实力厂家怎么选
  • 2025年目前耐用的家电微动开关源头厂家怎么选,大电流微动开关/新能源微动开关/小型微动开关/微动开关/汽车微动开关定做厂家有哪些
  • 2025 年 12 月处理剂厂家权威推荐榜:硅胶处理剂、橡胶处理剂源头精选,强力粘接与长效稳定解决方案
  • 2025年GEO优化工具推荐:AI驱动下的流量新引擎
  • 2025专门申请香港大学的中介
  • 2025香港留学机构十强排名榜
  • java.io.IOException: Packet lenxxxxxx is out of range!
  • 2025深圳EVA材料厂家实力榜:共创辉煌以高弹防火技术领跑,六家创新型企业深度解析
  • 2025电线厂家实力排行榜:深圳奔达康电缆以无氧铜技术领跑,六家高潜力本土品牌深度解析
  • ISCTF2025 赛后WP
  • 上海浩潭环保科技:实力、口碑与专业服务的融合