资讯专栏INFORMATION COLUMN

设计模式(python实现):策略模式

seanlook / 261人阅读

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

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

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

将相同提取,将变化拆分

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44782.html

相关文章

  • Python学习之路25-使用一等函数实现设计模式

    摘要:本篇主要讲述中使用函数来实现策略模式和命令模式,最后总结出这种做法背后的思想。 《流畅的Python》笔记。本篇主要讲述Python中使用函数来实现策略模式和命令模式,最后总结出这种做法背后的思想。 1. 重构策略模式 策略模式如果用面向对象的思想来简单解释的话,其实就是多态。父类指向子类,根据子类对同一方法的不同重写,得到不同结果。 1.1 经典的策略模式 下图是经典的策略模式的U...

    econi 评论0 收藏0
  • 每天一个设计模式·策略模式

    摘要:策略模式原文地址更多设计模式系列教程更多免费教程项目地址作者按每天一个设计模式旨在初步领会设计模式的精髓,目前采用靠这吃饭和纯粹喜欢两种语言实现。 策略模式原文地址 更多《设计模式系列教程》 更多免费教程 0. 项目地址 作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript(靠这吃饭)和python(纯粹喜欢)两种语言实现。诚然,每种设计模式都有多种...

    gxyz 评论0 收藏0
  • 每天一个设计模式·策略模式

    摘要:策略模式原文地址更多设计模式系列教程更多免费教程项目地址作者按每天一个设计模式旨在初步领会设计模式的精髓,目前采用靠这吃饭和纯粹喜欢两种语言实现。 策略模式原文地址 更多《设计模式系列教程》 更多免费教程 0. 项目地址 作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript(靠这吃饭)和python(纯粹喜欢)两种语言实现。诚然,每种设计模式都有多种...

    EsgynChina 评论0 收藏0
  • 流畅的python读书笔记-第六章-使用一等函数实现设计模式

    摘要:在复杂的情况下,需要具体策略维护内部状态时,可能需要把策略和享元模式结合起来。函数比用户定义的类的实例轻量,而且无需使用享元模式,因为各个策略函数在编译模块时只会创建一次。 一等函数实现设计模式 经典的策略模式定义 定义一系列算法,把它们一一封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。 案例 假如一个网店制定了下述折扣规则。 有 1000 或以上积分...

    cnsworder 评论0 收藏0
  • Python 用函数重构经典策略模式

    摘要:前言合理使用作为一等对象的函数,可以使某种设计模式得以简化。本例中这个抽象类扮演这个角色。此外,策略实例没有状态实例属性使用函数代替抽象类,每个策略都是函数,不必实例化,拿来即用。 前言 合理使用作为一等对象的函数,可以使某种设计模式得以简化。 关于策略 定义一系列算法,把它们一一封装起来,并且使它们可以相互替换。 一个策略模式的示例 规则 1 有1000或以上积分的客户,每个订单享...

    chenjiang3 评论0 收藏0

发表评论

0条评论

seanlook

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<