最近,一个女学生正在与我交流如何有效地避免在代码中其他判断或有条件判断的判断力?需要更多答案,使用设计来避免此问题是合理的。
在设计模式下,您可以使用工厂模式或策略模式来解决此类问题。工厂模型以前已经共享,感兴趣的学生可以对其进行审查。
以前文章的设计模式系列:
那么,工厂模型和策略模型有什么区别?
这次我将讨论如何决定策略模式。
什么是战略模式?它的原则实施是什么?
定义一系列算法,封装每个算法,并使它们交换。不同的策略可以使算法更改独立于其客户。上面的定义来自设计模式的美
感觉有点抽象?然后看一个结构图
看着这样的结构实际上并不复杂,它类似于状态模式。
那么如何实施此代码?
例如,每个人绝对不熟悉汽车。愿大家尽快完成汽车梦。
首先,首先定义抽象策略
这是界面形式的相同方法,还有另一种编写抽象方法摘要的方法。这取决于每个人的选择。
其次定义实施算法方法的特定齿轮策略。
最后,是实现运行环境。您可以将其定义为策略范围,但这是相同的含义。
主要方法中的测试演示可以通过不同类型的不同类型看到不同的策略。这是策略模式的主要思想。
在上下文中定义了两种方式:
策略模式也反映在框架中非常普遍的位置中,每个人都必须使用它。
那就是JDK ThreadPoolExecutor中的线程池
首先,它类似于实现线程池异常策略的线程池的定义。
该线程池的异常策略是策略模式的想法。
在源代码中,有一个抽象的异常策略接口的拒绝ExecutionHandler,它也具有四个拒绝策略。关系图如下:
这是框架的实施例。根据您的业务情况,合理选择了线程池的异常策略。
在实际业务场景中,仍然有许多策略。
在社交电子商务中共享产品是一个非常重要的链接。假设我们现在将共享图片功能,例如当前有许多共享方案,例如单个产品,多产品,订单,场地,邀请,邀请,小程序链接等。
用本流程图的IF else语句做出一般业务代码判断,就像以下方式一样:
在这里,您可以看到,如果其他情况,则需要添加每种新类型的共享类型。当有十几个场景时,代码将是整体上很长的,而且看起来不太舒适。
接下来,查看如何使用策略模式进行重建:
策略模型已经在这里进行了改造。在客户请求方面,如果其他判断完全没有很多。您只需要通过相应的策略方法即可。在这里,我们维护策略缓存图。当共享案例的直接调用获得该策略时,它直接从更改策略。实现策略对象。
这已经达到了行为行为的想法。在同一时间,它也避免了如果其他判断力的长长。
优势:
缺点:
在谈论上面的策略模式之后,总体外观实际上相对简单。我们仍然必须学习每种设计模式的想法。当然,由于设计模式而不要设计代码,但这将是毫无价值的。