1.让一个对象的某个方法可以随时改变,而不用更改对象的代码
2.对于动态类型的Python语言,不需要定义接口
3.基本的实现方法:用类作为参数传递
例如:
12_eg3.py
class Moveable:
def move(self):
print('Move...')
class MoveOnFeet(Moveable):
def move(self):
print("Move on Feet.")
class MoveOnWheel(Moveable):
def move(self):
print("Move on Wheels.")
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable()
def move(self):
self.moveable.move()
class Test:
def move(slef):
print("I'm Fly.")
if __name__ == '__main__':
m = MoveObj()
m.set_move(Moveable)
m.move()
m.set_move(MoveOnFeet)
m.move()
m.set_move(MoveOnWheel)
m.move()
m.set_move(Test)
m.move()
程序的运行结果为:
4.最简的实现方法:函数作为参数来传递
例如:
def movea():
print('Move a.')
def moveb():
print('Move b.')
class MoveObj:
def set_move(self,moveable):
self.moveable = moveable
def move(self):
self.moveable()
if __name__ == '__main__':
m = MoveObj()
m.set_move(movea)
m.move()
m.set_move(moveb)
m.move()
程序的运行结果为:
原文链接:http://www.maiziedu.com/wiki/python/strategy/
<!--EndFragment-->
相关推荐
Python设计模式是面向对象编程中的一个关键概念,它是一套被广泛接受的解决常见问题的最佳实践。...配合源代码文件,你可以更直观地看到这些模式在Python代码中的实现,加深对设计模式的理解,提升编程技能。
Python数据分析实战源代码是针对那些想要深入理解和应用Python进行数据处理和分析的初学者和专业人士的宝贵资源。这个综合性的教程共分为六个章节,每个章节都涵盖了数据分析过程中的一个重要环节,确保学习者能够...
Python五子棋小游戏是一款利用Python编程语言开发的休闲娱乐项目,它基于Pygame库构建,提供了人机对战和局域网对战两种游戏模式。Pygame是Python的一个模块,专为开发2D游戏和多媒体应用而设计。下面将详细探讨这个...
在Python的世界里,数据挖掘和模式识别是两个关键领域,其中GSP(广义序列模式)算法是一种在时间序列数据中发现频繁模式的有效方法。GSP算法最初由Takaki和Tokunaga在1997年提出,主要用于发现序列数据库中的有趣...
该项目通过24个精心设计的Python源代码文件,将设计模式分为了三大类别:创建型模式、行为型模式和结构型模式。这些模式不仅在理论上有详尽的解释,更有对应的Python实现代码,使开发者可以直观地学习和理解。比如,...
这些示例包括了22个Python源代码文件,每个文件都包含一个或多个设计模式的实现。此外,还有5个XML配置文件,它们可能用于配置应用程序中的某些行为或者设置,使得模式的使用更加灵活。一个Git忽略文件(.gitignore...
源码软件意味着用户可以查看、修改和分发程序的原始代码。对于Python自动选股系统,源码的开放性让开发者能够深入了解其工作原理,根据自身需求进行定制或优化。这不仅有利于学习,也为二次开发提供了便利。 三、...
1. **Python解释器的运行流程**:介绍如何从源代码到字节码,再到机器码的转换过程,包括词法分析、语法解析和编译阶段。 2. **对象系统**:探讨Python中的对象模型,包括对象的创建、生命周期管理、继承和多态性。...
本项目以"2048小游戏人工智能模式的Python实现源码.zip"为主题,其中包含了一个名为"2048AI-master"的文件夹,这显然是一份使用Python编程语言实现2048游戏的AI算法的代码库。接下来,我们将深入探讨这个项目中可能...
除了Python源代码文件,还有XML文件、Git忽略文件、Idea项目配置文件和Markdown文件。XML文件可能用于配置或测试数据,Git忽略文件有助于管理版本控制过程中的非必要文件,Idea项目配置文件则针对特定的集成开发环境...
基于插电式电动汽车提升电网暂态稳定性的控制策略:Python联合PSS E源代码实现与性能探究,利用插电式电动汽车提高电网暂态稳定性 python联合PSS E源代码,代码按照高水平文章复现,保证正确 插电式电动汽车(pev)在...
这些设计模式的源码文件以及相关文档的提供,不仅有助于理解每种设计模式的精髓,还能够指导开发者如何在实际的Python项目中应用这些设计模式,以解决实际问题,提高代码质量。此外,该项目中包含的.gitignore文件...
基于插电式电动汽车提升电网暂态稳定性的控制策略:Python联合PSS/E源码实现探讨与仿真验证,利用插电式电动汽车提高电网暂态稳定性技术——基于发电机涡轮转速调节与Python联合PSS E源代码的创新应用研究,利用插电式...
- **状态模式4**:可能引入了更复杂或更优化的实现,比如使用策略模式结合状态模式,或者用更高级的Python特性如上下文管理器。 状态模式的优点包括: - **减少条件分支**:通过将状态行为封装在独立的类中,可以...
3. **行为型模式**:包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式...
《Python飞机大战源代码》是一款基于Python编程语言开发的飞行射击游戏,其核心目标是提供一个有趣、互动的游戏体验,同时也为学习者提供了深入理解Python编程、游戏开发以及图形用户界面设计的机会。在这个加强版中...
在这个例子中,我们首先分析网页源代码,找出每个章节链接的位置,然后使用XPath进行元素定位和提取。XPath是一种在XML文档中查找信息的语言,可以方便地选取节点。为了提高代码复用性,将请求功能封装为函数。获取...
本压缩包"精选_基于Python的数据库实现_源码打包"提供了一套Python实现的数据库管理系统的源代码,对于学习和理解Python如何与数据库交互具有极高的价值。 首先,我们要讨论Python中的数据库API(Application ...
- **策略模式**:定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 - **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个...