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年提出,主要用于发现序列数据库中的有趣...
源码软件意味着用户可以查看、修改和分发程序的原始代码。对于Python自动选股系统,源码的开放性让开发者能够深入了解其工作原理,根据自身需求进行定制或优化。这不仅有利于学习,也为二次开发提供了便利。 三、...
总之,《精通Python设计模式源码》提供了丰富的实践素材,是Python开发者提升设计能力和代码质量的宝贵资源。通过学习和运用这些设计模式,你不仅可以提高编程技能,还能更好地理解和解决复杂软件系统中的问题。在...
1. **Python解释器的运行流程**:介绍如何从源代码到字节码,再到机器码的转换过程,包括词法分析、语法解析和编译阶段。 2. **对象系统**:探讨Python中的对象模型,包括对象的创建、生命周期管理、继承和多态性。...
本项目以"2048小游戏人工智能模式的Python实现源码.zip"为主题,其中包含了一个名为"2048AI-master"的文件夹,这显然是一份使用Python编程语言实现2048游戏的AI算法的代码库。接下来,我们将深入探讨这个项目中可能...
本书用实际生活中的例子带你了解常用的设计模式,介绍了诸多有关编写Python风格代码的底层细节和概念,包括故障排除、实践、系统架构和设计原则等,帮你解决每天都会遇到的问题。 探索用工厂方法和抽象工厂来创建...
- **状态模式4**:可能引入了更复杂或更优化的实现,比如使用策略模式结合状态模式,或者用更高级的Python特性如上下文管理器。 状态模式的优点包括: - **减少条件分支**:通过将状态行为封装在独立的类中,可以...
3. **行为型模式**:包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式...
《Python飞机大战源代码》是一款基于Python编程语言开发的飞行射击游戏,其核心目标是提供一个有趣、互动的游戏体验,同时也为学习者提供了深入理解Python编程、游戏开发以及图形用户界面设计的机会。在这个加强版中...
在这个例子中,我们首先分析网页源代码,找出每个章节链接的位置,然后使用XPath进行元素定位和提取。XPath是一种在XML文档中查找信息的语言,可以方便地选取节点。为了提高代码复用性,将请求功能封装为函数。获取...
本压缩包"精选_基于Python的数据库实现_源码打包"提供了一套Python实现的数据库管理系统的源代码,对于学习和理解Python如何与数据库交互具有极高的价值。 首先,我们要讨论Python中的数据库API(Application ...
- **策略模式**:定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 - **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个...
源代码文件.zip中可能包含了书中各章示例代码,读者可以通过实际运行这些代码来加深理解。动手实践是学习设计模式的关键,通过编写和修改代码,可以更好地领会每种模式的精髓及其在实际项目中的应用。 总之,《精通...
【Python Django网站实现源代码详解】 Django是一个高级的Python Web框架,它鼓励快速开发和清洁、实用的设计。结合Bootstrap前端框架,可以构建美观且响应式的网页应用。本篇文章将深入探讨如何使用Python Django...
在这个“chatgpt源码-Python”压缩包中,我们很可能是得到了一个使用Python实现的ChatGPT模型的学术版本——`chatgpt_academic-master`。 1. **Python基础**: Python是一种高级编程语言,以其简洁明了的语法著称。...
其中,源代码部分可能包括了上述各个步骤的实现,测试数据用于验证算法的效果,而文档则可能详细解释了每一步的原理和实现方法。 总体而言,该项目提供了一种基于Python3的实用方法,利用互信息和信息熵来进行中文...