博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(python实现):策略模式
阅读量:7095 次
发布时间:2019-06-28

本文共 1143 字,大约阅读时间需要 3 分钟。

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

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.总结

将相同提取,将变化拆分

转载地址:http://nsaql.baihongyu.com/

你可能感兴趣的文章
Solr搜索引擎 — SolrCloud安装和集群配置
查看>>
debian 6 上安装 fcitx-4.x
查看>>
DualPivotQuicksort
查看>>
linux Centos 6.5 安装桌面环境GNOME
查看>>
OSChina 周六乱弹 ——我的闺蜜是总统
查看>>
Redux DevTools 工具 (redux-devtools是一个有趣而又高效的redux开发工具)
查看>>
Android 自定义ViewGroup 实战篇 -> 实现FlowLayout
查看>>
禁止百度流氓安装
查看>>
自定义异常笔记
查看>>
17款最佳的代码审查工具
查看>>
mysql_5.7.17 安装时无法启动,尝试很多方法最后一招搞定!!!
查看>>
Nginx 配置多站点
查看>>
Object-C代码练习【代码块】
查看>>
Swift项目兼容Objective-C问题汇总
查看>>
安装apache2.4+php5.6 记录
查看>>
Elasticsearch 2.3.3 安装
查看>>
关于Concurrent的几个概念
查看>>
.Net 大型分布式基础服务架构横向演变概述
查看>>
mybaits 动态SQL语句
查看>>
20个非常有用的Java程序片段
查看>>