设计模式002:简单工厂模式
工厂角色:payment_factory
抽象产品角色:payment
具体产品角色:Alipay
from abc import ABCMeta, abstractmethodclass Payment(metaclass = ABCMeta):def pay(self, money):passclass AliPay(Payment):def __init__(self, use_huabei = False):self.use_huabei = use_huabeidef pay(self, money):if self.use_huabei:print("花呗支付%d元." % money)else:print("支付宝支付%d元"% money)
class WechatPay:def pay(self, money):print("微信支付%d元"% money)class PaymentFactory:def create_payment(self, method):if method == "alipay":return AliPay()elif method == "huabei":return AliPay(use_huabei = True)elif method == "wechat":return WechatPay()else:raise TypeError("No such payment named %s" % method)#client
#隐藏类的内部实现
pf = PaymentFactory()
p = pf.create_payment("huabei")
p.pay(100)
花呗支付100元.
设计模式002:简单工厂模式相关推荐
- php的类图怎么生成_PHP设计模式之简单工厂模式
PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...
- C#设计模式(2)——简单工厂模式
一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...
- 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)
简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1 场景问题 ...
- .NET设计模式(1): 简单工厂模式
.NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...
- JS常用的设计模式(2)——简单工厂模式
JS常用的设计模式(2)--简单工厂模式 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定 ...
- 设计模式之简单工厂模式(C#版)
设计模式之简单工厂模式(C#版) 简介 假设有个女朋友 总结 简介 我用最简洁而直接的方式来描述一下,什么是简单工厂模式.一句话就是,工厂类使用switch case语句返回特定类型. 下面,我们用一 ...
- 大牧絮叨设计模式:简单工厂模式
文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...
- 设计模式之简单工厂模式(Java 实现)
设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...
- 设计模式之简单工厂模式
一.概述 工厂模式具体包括了简单工厂.工厂方法.抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式. 但是它是理解其它的工厂模式的一个很好 ...
- 设计模式之简单工厂模式(Simply Factory)摘录
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种 ...
最新文章
- 基于Keras的CNN/Densenet实现分类
- 解题报告(五)组合计数(ACM / OI)超高质量题解
- /usr/bin/perl^M: bad interpreter: No such file or directory
- Visual Studio集成Qt环境搭建_详解与测试
- C++获取字符串长度详解
- It is possible that this issue is resolved by uninstalling an existi
- java 多线程下载 开源_Android Downloader是一个开源的多线程,多任务下载框架
- C++工作笔记-对'xxxxx'未定义的引用的2种情况
- pandas dataframe随机采样
- 利用Sigar获取系统信息
- PetShop 4.0知识点:加密和解密Web.config文件的配置节
- phpstudy 上怎么运行 thinkPHP ?
- 常见芯片封装类型介绍
- RN实现手机摇一摇功能
- excel表格如何转换成word表格_如何将excel转换成word?如何将excel表格转换成word文档?...
- ClinkHouse基本使用说明
- JavaScript的基础语句整理
- 【Codeforces 1392F】Omkar and Landslide | 思维、结论
- Android入门之把窗口信息传递给InputDispatcher
- 猿创征文 | 【STM32】ESP8266 wifi模块创建阿里云产品