轻松掌握python设计模式之策略模式
本文实例为大家分享了python策略模式代码,供大家参考,具体内容如下
""" 策略模式 """ import types class StrategyExample: def __init__(self, func=None): self.name = '策略例子0' if func is not None: """给实例绑定方法用的,不会影响到其他实例""" self.execute = types.MethodType(func, self) def execute(self): print(self.name) def execute_replacement1(self): print(self.name + ' 从执行1') def execute_replacement2(self): print(self.name + ' 从执行2') if __name__ == '__main__': strat0 = StrategyExample() strat1 = StrategyExample(execute_replacement1) strat1.name = '策略例子1' strat2 = StrategyExample(execute_replacement2) strat2.name = '策略例子2' strat0.execute() strat1.execute() strat2.execute()
运行结果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
java设计模式之外观模式(Facade)
概述 外部与内部子系统通信时必须通过的一个统一的外观模式对象进行,就是外观模式,也称门面模式.一般而言,Facade模式是为了降低客户端与实现化层之间的依赖性.外观模式的用意是为子系统提供一个集中化和简化的沟通渠道. UML类图 在上面的UML图中,出现三个角色: 客户端角色(Client):用户通过客户端来调用外观模式的类,从而来操作子系统: 外观角色(Facade):客户端可以调用这个类,此类中包含了调用子系统中具体的功能: 子系统角色(Module):定义了子系统中具体的单个功能: 代码示
-
php设计模式之单例模式代码
php设计模式之单例模式的例子,供大家参考,具体内容如下 <?php /** * php设计模式 单例模式 */ class Fruit{ private static $instanceMap = array(); //protected getter for singleton instances protected static function getSingleton($className){ //保证单例模式 并且不能从控制器实例化和克隆 if (!isset(self::$inst
-
设计模式速记
创建型模式 静态工厂模式(Factory Pattern)静态方法返回实例 抽象工厂模式(Abstract Factory Pattern)接口方式返回实例 建造者模式(Builder Pattern)每次返回多个实例 单例模式(Singleton Pattern)类只有一个实例 原型模式(Prototype Pattern)实现ICloneable接口 结构型模式 适配器模式(Adapter Pattern)不想实现每个接口 桥接模式(Bridge Pattern)给桥设置某个实例,用桥调用实
-
Java开发中的23种设计模式详解(推荐)
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每
-
常用的javascript设计模式
阅读目录 什么是设计模式 单体模式: 工厂模式: 单例模式 观察者模式(发布订阅模式) 策略模式 模板模式 代理模式 外观模式 设计模式太多了,貌似有23种,其实我们在平时的工作中没有必要特意去用什么样的设计模式,或者你在不经意间就已经用了设计模式当中的一种.本文旨在总结平时相对来说用的比较多的设计模式. 什么是设计模式 百度百科: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了可重用代码.让代码更容易被他人理解.
-
java设计模式之适配器模式
感谢<Android源码设计模式解析与实战> 何红辉 关爱民 著 适配器模式在我们的开发中使用率极高,从代码中随处可见的Adapter就可以判断出来,从最早的ListView.GridView.到现在最新的RecyclerView都需要使用Adapter,并且在开发中我们遇到的优化问题.出错概率较大的地方也基本都出自Adapter. 适配器是将两个不兼容的火龙融合在一起,将不同的东西通过一种转换使得它们能够协作起来,例如,经常碰到要在两个没有关系的类型之间进行交互,第一个解决方案是修改各自类的
-
java设计模式之简单工厂模式
在编写一个计算器程序时,可以将业务逻辑和显示分离,业务逻辑封装为一个类(封装):如果要新添加一种运算,可以先创建一个Operation的基类,然后各种运算从Operation类继承,并实现GetResult()虚函数,这时添加新的运算只需要派生一个新的类,即不需要之前的运算参与编译.如何让计算器知道我是希望使用哪种运算呢?应该考虑单独的类来做这个创造实例的过程,这就是工厂.创建一个OperationFactory类,传入参数,函数createOperate就可以实例化出合适的对象. Java代码
-
java设计模式之工厂方法模式
概要 设计模式是一门艺术,如果真正了解这门艺术,你会发现,世界都将变得更加优美. 定义 定义一个用于创建对象的接口,让其子类去决定实例化那个类 使用场景 任何使用复杂对象的地方,都可以使用工厂模式 UML 1.抽象工厂 抽象工厂:我们都知道,工厂,一般只有一个作用,那就生产,比如,吉利汽车厂,那就制造吉利汽车,iphone手机制造厂就造iphone等等 所以可以用一个简单的方法概括,就是create(); 2.具体汽车制造厂 具体汽车制造厂:实现了抽象工厂,具有实际的制造汽车的流程和方法等 3.
-
Python设计模式之抽象工厂模式
python面向对象编程入门,我们需要不断学习进步 """抽象工厂模式的实现""" import random class PetShop: """宠物商店""" def __init__(self, animal_factory=None): """宠物工厂是我们的抽象工厂.我们可以随意设置.""" self.pet_fact
-
PHP常用的三种设计模式汇总
本篇文章是学习PHP中常用的三种设计模式的笔记及总结,不管采用哪一门语言开发什么,几乎都会使用到设计模式,我们为什么需要设计模式呢?它的诞生对于我们开发人员来说有什么样的作用与意义呢? 相信做iOS开发的人员对设计模式也会挺熟悉吧?比如单例设计模式.工厂设计模式.观察者模式.MVC框架结构设计模式等. 接下来我们一起来学习PHP中最常用的三种设计模式:单例设计模式.工厂设计模式和观察者设计模式. 单例设计模式 所谓单例模式,即在应用程序中最多只有该类的一个实例存在,一旦创建,就会一直存在于内存中
-
Android中的设计模式
一般来说,常用的设计模式有以下八种:单例.工厂.观察者.代理.命令.适配器.合成.访问者 单例模式:目的是为了让系统中只有一个调用对象,缺点是单例使其他程序过分依赖它,而且不同单例运行在不同进程中,使得维护困难: 工厂模式:生产固定的一些东西,如抽象类,缺点是产品修改麻烦:如喜欢动作片和爱情片的人分别向服务器发出同一个请求,就可以得到他们想看的影片集,相当于不同对象进行同一请求,需求均得到满足. 观察者模式:就是多个对象对一个对象进行监控,如缓存: 代理模式:自己的事交给别人去做,分别返回结果即
-
轻松掌握python设计模式之访问者模式
本文实例为大家分享了python访问者模式代码,供大家参考,具体内容如下 """访问者模式""" class Node(object): pass class A(Node): pass class B(Node): pass class C(A, B): pass class Visitor(object): def visit(self, node, *args, **kwargs): meth = None ""&quo
随机推荐
- AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
- node.js 用socket实现聊天的示例代码
- response对象的使用(实例讲解)
- IOS给图片添加水印(两种方式)
- Python 代码性能优化技巧分享
- JavaScript栏目列表隐藏/显示简单实现
- asp.net xml序列化与反序列化第1/2页
- 请php正则走开
- PHP将Excel导入数据库及数据库数据导出至Excel的方法
- 原生js实现ajax方法(超简单)
- 使用shell脚本实现ping对应IP所对应的人名(推荐)
- python操作mysql数据库
- jQuery 渐变下拉菜单
- jQuery1.9+中删除了live以后的替代方法
- javascript学习网址备忘
- Json 自定义使用函数的简单实例
- php对象在内存中的存在形式分析
- Android中ProgressDialog的dismiss()与cancel()方法的区别
- 解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com
- PHP实现QQ登录的开原理和实现过程