工厂方法模式

---恢复内容开始---

工厂方法模式

  定义:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。

  

  在这之前学习了简单工厂模式,用简单工厂模式实现了计算器功能。

  工厂类代码如下:

 1     public class OperationFactory
 2     {
 3         public static Operation CreateOperae(string operate)
 4         {
 5             Operation oper = null;
 6             switch (operate)
 7             {
 8                 case "+":
 9                     oper = new OperationAdd();
10                     break;
11                 case "-":
12                     oper = new OperationSub();
13                     break;
14                 case "*":
15                     oper = new OperationMul();
16                     break;
17                 case "/":
18                     oper = new OperationDiv();
19                     break;
20             }
21             return oper;
22         }
23     }

  客户端代码:

1             Operation oper;
2             oper = OperationFactory.CreateOperae("+");
3             oper.NumberA = 2;
4             oper.NumberB = 5;
5             double result = oper.GetResult();            

 

  工厂模式实现:

1     /// <summary>
2     /// 工厂接口
3     /// </summary>
4     interface IFactory
5     {
6         Operation CreateOperation();
7     }

  构建具体的工厂去实现这个接口

 1     class AddFactory : IFactory
 2     {
 3         public Operation CreateOperation()
 4         {
 5             return new OperationAdd();
 6         }
 7     }
 8 
 9     class SubFactory : IFactory
10     {
11         public Operation CreateOperation()
12         {
13             return new OperationSub();
14         }
15     }
16 
17     class MulFactory : IFactory
18     {
19         public Operation CreateOperation()
20         {
21             return new OperationMul();
22         }
23     }
24 
25     class DivFactory : IFactory
26     {
27         public Operation CreateOperation()
28         {
29             return new OperationDiv();
30         }
31     }

  客户端代码:

1             IFactory operFactory = new AddFactory();
2             Operation oper = operFactory.CreateOperation();
3             oper.NumberA = 1;
4             oper.NumberB = 2;
5             double result = oper.GetResult();    

 

  简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

  但是新增一个运算功能时,我们需要给运算工厂类的方法里面增加一个“case”分支条件,这样违背了  开放—封闭原则

  工厂方法模式实现时,客户端需要解决实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂内部逻辑判断移到了客户端代码来进行。

  你想要家功能,本来是该工厂类的,而现在是修改客户端。

---恢复内容结束---

转载于:https://www.cnblogs.com/-zda/p/7153129.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值