Python中的策略设计模式
[](https://res.cloudinary.com/practicaldev/image/fetch/s--XlHz8puK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/vhu1k43a2tcf4fre947v.p
[](https://res.cloudinary.com/practicaldev/image/fetch/s--XlHz8puK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/vhu1k43a2tcf4fre947v.png)
如果您熟悉面向对象编程的基础知识及其原理,并且在您的项目中使用它,那么也许是时候开始学习不同的设计模式并使用它们了。
一个好的 OO 需要一个好的 OO 设计师。目标是我们试图拥有可重用、可维护和可扩展的代码。
所以你需要一个好的面向对象设计。这就是设计模式可以帮助我们的地方!
有很多设计模式,您可以在 Gangs of Four (GoF) Design Patterns 一书中找到并阅读它们。
今天我们将讨论一种最简单和最流行的设计模式。
策略模式被认为是一种行为设计模式。
它允许您定义算法,将每个算法放入一个单独的类中,并使您的对象可互换。
例如,如果你想拥有一个对象并改变它的行为,你需要修改类代码。
想象一下,您有一个基于 OO 的计算器,它只获取数字并具有设置器,并且您需要向其添加新的功能和方法,例如求和、减法、乘法和除法。
这次你不会在类中实现这些方法。
首先,我们需要一个这样的摘要:
from abc import ABC, abstractmethod
class Operation_strategy(ABC):
@abstractmethod
def do_operation(self, n1, n2):
pass
进入全屏模式 退出全屏模式
之后,您需要为每个操作生成新的类。
class Sum_strategy(Operation_strategy):
def do_operation(self, n1, n2):
return n1 + n2
class Sub_strategy(Operation_strategy):
def do_operation(self, n1, n2):
return n1 - n2
class Mul_strategy(Operation_strategy):
def do_operation(self, n1, n2):
return n1 * n2
class Div_strategy(Operation_strategy):
def do_operation(self, n1, n2):
if n2 != 0:
result_number = n1 / n2
return result_number
else:
raise ValueError("Sorry, no numbers below zero")
进入全屏模式 退出全屏模式
现在还有一件事,你必须在你的计算器类中初始化并设置一个操作设置器。
也许现在你很困惑,说发生了什么事。但让我为你说清楚。
在计算器类内部,我们有 3 个设置器(第一个数字、第二个数字、操作),而不是 2 个数字设置器(第一个数字和第二个数字)。
班级不知道要做什么,它只是得到数字和一个操作!
使用这种模式,您可以轻松地定义对象的行为,而无需更改类代码,这是一种简洁的编码方式,因为它们彼此分开。
您可以在my Github上查看、下载和运行完整版代码,这更有意义。这里是代码。
更多推荐
所有评论(0)