策略模式简单说和小时候我们玩的玩具差不多,一堆零部件通过不同的拼凑构成几个不同的机器人。

1.举个栗子

我们买了一个机器人,同时这个机器人配了三把武器,三把武器可以替换使用

2.Show in Code

在实例中,我们先创造一个人,天生自带人手

class People:

def __init__(self, hand = None):

self.name = "人手"

if hand is not None:

self.execute = types.MethodType(hand, self)

def execute(self): #安装部件的位置

print(self.name)

现在我们再给他创建两个备用的手,一个pighand、一个cathand

//创造猪手

def pighand(self):

print(self.name + " 用猪手")

print("拱你")

//创造猫爪

def cathand(self):

print(self.name + " 用猫爪")

print("抓你")

3.完整代码

import types

//创造一个人

class People:

def __init__(self, hand = None):

self.name = "人手"

if hand is not None:

self.execute = types.MethodType(hand, self)

def execute(self): #安装部件的位置

print(self.name)

//创造猪手

def pighand(self):

print(self.name + " 用猪手")

print("拱你")

//创造猫爪

def cathand(self):

print(self.name + " 用猫爪")

print("抓你")

if __name__ == '__main__':

hand0 = People()

#用猪手替换人手

hand1 = People(pighand)

hand1.name = "猪手"

#用猫爪替换ren'hsou

hand2 = People(cathand)

hand2.name = "猫爪"

hand0.execute()

hand1.execute()

hand2.execute()

4.总结

将相同提取,将变化拆分

python策略模式_设计模式(python实现):策略模式相关推荐

  1. 创建型模式、结构型模式和行为型模式_设计模式之创建型模式

    设计模式GOF23(Group of Four) 设计模式可分为三种类型: 创建型模式:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式. 结构型模式:适配器模式,桥接模式,装饰模式,组合模式, ...

  2. 组合模式_设计模式结构性:组合模式(CompositePattern)

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

  3. 抽象工厂模式_设计模式系列—抽象工厂模式

    前言 23种设计模式速记 单例(singleton)模式 工厂方法(factory method)模式 23种设计模式快速记忆的请看上面第一篇,前面说完了工厂方法模式,我们发现工厂方法模式存在一个严重 ...

  4. python实现模式_设计模式-python实现

    设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码.反之,设计模式更为高级,它是一种必须在特定情 ...

  5. java设计与模式_设计模式《JAVA与模式》之状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...

  6. 抽象工厂模式_设计模式(3) 抽象工厂模式

    抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式.简单工厂的职责非常简单:构造某个实体类型,然后把实例作为抽象类型返回: 工厂方法模式则进一步抽象出 ...

  7. mysql工厂模式_设计模式-三种工厂模式实例

    1.简单工厂模式:代替new产生对象,产品的类型比较少时. 我们要获得三种不同的数据库对象,如Mysql,SQLserver,Oracle,它们拥有共同的特征,即可以进行抽象,简单工厂目的是将获得具体 ...

  8. java mediator模式_设计模式之中介者模式(mediator模式)

    引入中介者模式 中介者模式实例 中介者模式分析 引入中介者模式 大家想象一下有十个人要共同完成一个工作,他们要互相合作和沟通,并且根据对方的通知可能要改变自己的状态,但这通常会带来很多问题,流程过于复 ...

  9. java静态工厂方法模式_设计模式:简单工厂模式(静态工厂方法模式)

    简单工厂的构成包括三个角色: 1)抽象产品类 2)具体产品类(继承抽闲产品类) 3)工厂类(生产具体产品) 具体代码实现 1.抽象产品类 /** * 抽象类 */ public abstract cl ...

最新文章

  1. GRE核心词汇助记与精练-List12转
  2. HashMap为什么是线程不安全的?
  3. python——输入输出
  4. boost::log::sinks::text_ipc_message_queue_backend用法的测试程序
  5. 工作197:判断对象里面是否有0和1
  6. 王道考研 计算机网络7 TCP/IP参考模型
  7. vue 懒人_Vue.js 中的实用工具方法【推荐】
  8. javajs ---- 判断字符串中是否包含子串
  9. 【iOS】Scale Fill、Aspect Fit 和 Aspect Fill 的区别(Content Mode)
  10. Lec 15 Projections onto subspaces
  11. 基于DEAP库的python进化算法-1
  12. Stata 15.1下载
  13. Python爬取——国家统计局省份加城市 并写入数据库
  14. DISC社交风格测试题--老虎 孔雀 考拉 猫头鹰
  15. Android之sdcard保存数据
  16. 如何使用 Pixelmator Pro调整照片,打印出最完美的照片效果?
  17. (原创)android6.0系统 PowerManager深入分析(很具体)
  18. 在某OC字符串中,搜索指定的某字符串:-rangeOfString:
  19. Android 签到打卡日历,自定义日期可带图标(附源码)
  20. apache arm 交叉编译_Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2

热门文章

  1. 显示Linux系统执行的进程
  2. Java之StringBuffer类
  3. 【LeetCode】0136. 只出现一次的数字
  4. 你只会用 ! = null 判空?嘿嘿!
  5. 看完这篇 HTTPS,和面试官扯皮就没问题了
  6. mybatis教程--延迟加载详解
  7. java最后一个注解@SuppressWarnings
  8. JSON与XML的区别比较(非常全面)
  9. Java文件流之练习
  10. pythone 打开文件 一行_【精品资料】用了这么多年单片机的Hex文件不懂?看这篇就够了...