文档章节

python设计模式(二)--策略模式(上)

极光火狐狸
 极光火狐狸
发布于 2016/05/11 17:47
字数 236
阅读 38
收藏 0

最近正在持续更新源码库,代码都是参考大话设计模式翻成python版,完整代码片段请到github上去下载.

https://github.com/zhengtong0898/python-patterns

 

参考:

    书籍<<大话设计模式>> 第二章 2.4小节

 

Python 3.x

# -.- coding:utf-8 -.-
# __author__ = 'zhengtong'
# 策略模式定义了算法家族,分类封装起来,让他们之间可以相互替换,
# 此模式让算法的变化不会影响到使用算法的客户。


class Strategy:

    """策略"""
    def __init__(self, strategy):
        self.strategy = strategy

    def context_interface(self):
        self.strategy.algorithm_interface()


class Algorithm:
    
    """算法抽象类"""

    def algorithm_interface(self):
        raise NotImplementedError


class ImplementA(Algorithm):
    
    """算法A"""

    def algorithm_interface(self):
        print('算法A实现')


class ImplementB(Algorithm):

    """算法B"""

    def algorithm_interface(self):
        print('算法B实现')


class ImplementC(Algorithm):
    
    """算法C"""    

    def algorithm_interface(self):
        print('算法C实现')


def main():
    context = Strategy(ImplementA())
    context.context_interface()

    context = Strategy(ImplementB())
    context.context_interface()

    context = Strategy(ImplementC())
    context.context_interface()

if __name__ == '__main__':
    main()

 

© 著作权归作者所有

共有 人打赏支持
极光火狐狸
粉丝 11
博文 29
码字总数 14739
作品 0
普陀
《 Head First 》学习笔记:策略模式 (python实现)

学习<head first>,书中是用java 来实现,我用python比较多,所以在这里记下 用python实现的方法 。 书中策略模式的定义 : 策略模式 : 策略模式定义了算法族,分别封装起来,让它们之间可以...

Jbryan
2013/06/13
0
0
python 与设计模式 ——工厂与单例

python 与设计模式 源码地址:[http://git.oschina.net/duoduo3_69/python_design_pattern][1] git checkout v001(这个版本与此篇博客相符) zarkpy里面运用了很多设计模式,以前一直很费解p...

duoduo3_69
2013/11/27
0
0
Python学习:19.Python设计模式-单例模式

一、单例模式存在的意义   在这里的单例就是只有一个实例(这里的实例就像在面向对象的时候,创建了一个对象也可以说创建了一个实例),只用一个实例进行程序设计,首先我们可以了解一下什...

BD-ld-2017
07/31
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
Python新式类 new init 单例模式与作用域(四)

1 新式类与旧式类 新式类拥有经典类的全部特性之外,还有一些新的特性,比如 发生变化,新增了静态方法,python3目前都采用新式类,新式类是广度优先,旧式类是深度优先 (2)类的方法 静态方法 类方...

善良小郎君
06/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache Bench学习笔记

使用apache bench测试并发请求 ab -H "X-IMATRIX-ACCESS-TOKEN:1234567" -c 1000 -n 1000 http://localhost:8080/portfolioes/1/performance...

OSC_fly
27分钟前
2
0
Oracle推出轻量级Java微服务框架Helidon

近日,Oracle 推出 了一个新的开源框架 Helidon ,该项目是一个用于创建基于微服务的应用程序的Java库集合。和 Payara Micro 、 Thorntail (之前的 WildFly Swarm )、 OpenLiberty 、TomEE...

小刀爱编程
28分钟前
5
0
mysql 按周统计

方法一 : 使用 DATE_FORMAT 格式化时间,格式化参数参考 -- 参考地址 SELECTDATE_FORMAT( create_time, '%Y%u' ) weeks,DATE_FORMAT( date_sub( create_time, INTERVAL WEEKDAY( cre...

小鸟00
32分钟前
3
0
深入理解JAVA锁的机制

1. synchronized实现原理 在java代码中使用synchronized可是使用在代码块和方法中,根据Synchronized用的位置可以有这些使用场景: 如图,synchronized可以用在方法上也可以使用在代码块中,...

laigous
33分钟前
2
0
Mysql几种索引类型的区别及适用情况

如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyISAM引擎支持。其可以...

ZhangLG
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部