`
小麦麦子
  • 浏览: 30692 次
文章分类
社区版块
存档分类
最新评论

Python策略模式实现源码分享

 
阅读更多

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-->

  • 大小: 15 KB
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    python设计模式及源码

    Python设计模式是面向对象编程中的一个关键概念,它是一套被广泛接受的解决常见问题的最佳实践。...配合源代码文件,你可以更直观地看到这些模式在Python代码中的实现,加深对设计模式的理解,提升编程技能。

    Python数据分析实战源代码

    Python数据分析实战源代码是针对那些想要深入理解和应用Python进行数据处理和分析的初学者和专业人士的宝贵资源。这个综合性的教程共分为六个章节,每个章节都涵盖了数据分析过程中的一个重要环节,确保学习者能够...

    Python五子棋小游戏源代码,支持人机对战和局域网对战两模式

    Python五子棋小游戏是一款利用Python编程语言开发的休闲娱乐项目,它基于Pygame库构建,提供了人机对战和局域网对战两种游戏模式。Pygame是Python的一个模块,专为开发2D游戏和多媒体应用而设计。下面将详细探讨这个...

    Python中的 GSP(广义序列模式)算法_python_代码_下载

    在Python的世界里,数据挖掘和模式识别是两个关键领域,其中GSP(广义序列模式)算法是一种在时间序列数据中发现频繁模式的有效方法。GSP算法最初由Takaki和Tokunaga在1997年提出,主要用于发现序列数据库中的有趣...

    Python自动选股系统源码.zip

    源码软件意味着用户可以查看、修改和分发程序的原始代码。对于Python自动选股系统,源码的开放性让开发者能够深入了解其工作原理,根据自身需求进行定制或优化。这不仅有利于学习,也为二次开发提供了便利。 三、...

    精通python设计模式源码

    总之,《精通Python设计模式源码》提供了丰富的实践素材,是Python开发者提升设计能力和代码质量的宝贵资源。通过学习和运用这些设计模式,你不仅可以提高编程技能,还能更好地理解和解决复杂软件系统中的问题。在...

    Python源码剖析(含目录+Small Python源码)

    1. **Python解释器的运行流程**:介绍如何从源代码到字节码,再到机器码的转换过程,包括词法分析、语法解析和编译阶段。 2. **对象系统**:探讨Python中的对象模型,包括对象的创建、生命周期管理、继承和多态性。...

    2048小游戏人工智能模式的Python实现源码.zip

    本项目以"2048小游戏人工智能模式的Python实现源码.zip"为主题,其中包含了一个名为"2048AI-master"的文件夹,这显然是一份使用Python编程语言实现2048游戏的AI算法的代码库。接下来,我们将深入探讨这个项目中可能...

    精通python设计模式与源码

    本书用实际生活中的例子带你了解常用的设计模式,介绍了诸多有关编写Python风格代码的底层细节和概念,包括故障排除、实践、系统架构和设计原则等,帮你解决每天都会遇到的问题。 探索用工厂方法和抽象工厂来创建...

    python 实现 状态模式

    - **状态模式4**:可能引入了更复杂或更优化的实现,比如使用策略模式结合状态模式,或者用更高级的Python特性如上下文管理器。 状态模式的优点包括: - **减少条件分支**:通过将状态行为封装在独立的类中,可以...

    Python-图说设计模式

    3. **行为型模式**:包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式...

    Python飞机大战源代码

    《Python飞机大战源代码》是一款基于Python编程语言开发的飞行射击游戏,其核心目标是提供一个有趣、互动的游戏体验,同时也为学习者提供了深入理解Python编程、游戏开发以及图形用户界面设计的机会。在这个加强版中...

    7个经典的python爬虫案例附源码分享

    在这个例子中,我们首先分析网页源代码,找出每个章节链接的位置,然后使用XPath进行元素定位和提取。XPath是一种在XML文档中查找信息的语言,可以方便地选取节点。为了提高代码复用性,将请求功能封装为函数。获取...

    精选_基于Python的数据库实现_源码打包

    本压缩包"精选_基于Python的数据库实现_源码打包"提供了一套Python实现的数据库管理系统的源代码,对于学习和理解Python如何与数据库交互具有极高的价值。 首先,我们要讨论Python中的数据库API(Application ...

    Python-PyPattyrn是一个Python设计模式模板旨在更容易更快地实现你自己项目的设计模式

    - **策略模式**:定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 - **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个...

    精通python设计模式

    源代码文件.zip中可能包含了书中各章示例代码,读者可以通过实际运行这些代码来加深理解。动手实践是学习设计模式的关键,通过编写和修改代码,可以更好地领会每种模式的精髓及其在实际项目中的应用。 总之,《精通...

    基于Python Django的网站实现源代码

    【Python Django网站实现源代码详解】 Django是一个高级的Python Web框架,它鼓励快速开发和清洁、实用的设计。结合Bootstrap前端框架,可以构建美观且响应式的网页应用。本篇文章将深入探讨如何使用Python Django...

    chatgpt源码-Python

    在这个“chatgpt源码-Python”压缩包中,我们很可能是得到了一个使用Python实现的ChatGPT模型的学术版本——`chatgpt_academic-master`。 1. **Python基础**: Python是一种高级编程语言,以其简洁明了的语法著称。...

    Python-python3实现互信息和左右熵的新词发现

    其中,源代码部分可能包括了上述各个步骤的实现,测试数据用于验证算法的效果,而文档则可能详细解释了每一步的原理和实现方法。 总体而言,该项目提供了一种基于Python3的实用方法,利用互信息和信息熵来进行中文...

Global site tag (gtag.js) - Google Analytics