策略模式
2016-03-02 22:04
330 查看
策略模式 定义算法簇,分别封装起来, 让他们之间可以互相替换,此模式让算法的变化对立与使用算法的客户
#coding:utf-8 class Duck: def __init__(self): self.fly_behavior = FlyNoWay() # 把飞的动作托付给FlyBehavior对象的子类 def perform_fly(self): self.fly_behavior.fly() def set_fly_behavior(self, fly_behavior): self.fly_behavior = fly_behavior # 不同的飞翔方法,都继承FlyBehavior class FlyBehavior: def fly(self): raise NotImplemented() class FlyWithWings(FlyBehavior): def fly(self): print 'fly with wings' class FlyNoWay(FlyBehavior): def fly(self): print 'can not fly' if __name__ == '__main__': d=Duck() d.perform_fly() #can not fly d.set_fly_behavior(FlyWithWings()) d.perform_fly() #fly with wings
相关文章推荐
- MSSQL 基础知识002
- python中的map,filter,zip函数
- 第5章 面向对象(基础篇)
- KEIL MDK STM32如何建立工程
- KEIL MDK STM32如何建立工程
- 关于git初始化后无 .git文件生成的问题
- DSP 2812: 使用C++封装外设时钟控制
- usermod修改用户属性
- 插入类排序----直接插入排序
- Jetty实战之 嵌入式Jetty集成Spring运行
- hdoj 1874 畅通工程续【dijkstra、floyd、spfa】
- 自定义搜索框(SearchView)
- 堆的申请和释放2
- 关于冒泡排序算法的初学错误认识
- 1086. Tree Traversals Again (25)
- ASP.NET 4 视频教程 风云之旅系列课程
- undefined reference to `clock_gettime’ 链接错误 解决方法
- 【慕课笔记】4-1 JDK内置的进制转换
- java中的三大修饰符static、final、abstract
- 欢迎使用CSDN-markdown编辑器