python 简单工厂模式
abc 是抽象类模块
abc.ABC 是继承抽象类 也可直接继承 (metaclass=ABCMeta)
abc.abstractmethod 是定义抽象方法
简单工厂模式:通过接口创建对象,但不会暴露对象创建逻辑
在设计模式中主要用于抽象对象的创建过程,让用户可以指定自己想要的对象而不必关心对象的实例化过程。
这样做的好处是用户只需通过固定的接口而不是直接去调用类的实例化方法来获得一个对象的实例,隐藏了实例创建过程的复杂度,
解耦了生产实例和使用实例的代码,降低了维护的复杂性。
http请求共6种(get,post,put,delete,options,head),现在我们用工厂模式来生成不同的请求对象.
import abc class Method(abc.ABC):
@abc.abstractmethod
def request(self, url):
pass class Get(Method):
def request(self, url):
print("Get 请求地址:%s" % url) class Post(Method):
def request(self, url):
print("Post 请求地址:%s" % url) class Delete(Method):
def request(self, url):
print("Delete 请求地址:%s" % url) # 生产对象 class MethodFactory:
def create(self, method_name) -> Method:
return eval(method_name)() if __name__ == '__main__':
factory = MethodFactory()
method = factory.create('Get')
get = method.request('http://www.baidu.com')
python 简单工厂模式的更多相关文章
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open ...
- python实现简单工厂模式
python实现简单工厂模式 模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工 ...
- [Python设计模式] 第1章 计算器——简单工厂模式
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...
- 设计模式(Python)-简单工厂,工厂方法和抽象工厂模式
本系列文章是希望将软件项目中最常见的设计模式用通俗易懂的语言来讲解清楚,并通过Python来实现,每个设计模式都是围绕如下三个问题: 为什么?即为什么要使用这个设计模式,在使用这个模式之前存在什么样的 ...
- Python 设计模式--简单工厂模式
简单工厂模式(Factory Pattern)是一种创建型的设计模式,像工厂一样根据要求生产对象实例. 特点:根据不同的条件,工厂实例化出合适的对象. <大话设计模式>中实例:四则运算计算 ...
- python设计模式 之 简单工厂模式
简单工厂模式属于类的创建型模式,适合用来对大量具有共同接口的类进行实例化,它能够推迟到执行的时候才动态决定要创建哪个类的实例.而不是在编译时就必须知道要实例化哪个类. python: #!/usr/b ...
- 《大话设计模式》——简单工厂模式(Python版)
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 例: 使用Python设计一个控制台计算器,要求输入两个数 ...
- python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...
- 大话设计模式Python实现-简单工厂模式
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一个简单的四则运算 #!/usr/ ...
随机推荐
- 美团-2019Q2述职总结
述职要求: 产品对平台化的规划并不清晰:内部因素:对SaaS平台的理解不够深刻: 对公司相关脚手架,服务搭建相关需要注意的点,有更深入的认识.对做系统服务的关注点有了更深入的理解. 功能权限的话: Q ...
- Java8新特性 (一)Lambda
目录 一.Lambda介绍 二.Lambda用法实例 三.Lambda变量作用域 前言: 这两天彻底的复习了一遍Java8的各种新特性,趁着热乎劲,把知识点整理成博客的形式保存一下. 一.Lambda ...
- java 465端口发送邮件
package com.fr.function; import java.io.IOException; import java.security.Security; import java.util ...
- axios与ajax的区别及中文用户指南
Ajax: Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. $.ajax({ ty ...
- springcloud添加自定义的endpoint来实现平滑发布
在我之前的文章 springcloud如何实现服务的平滑发布 里介绍了基于pause的发布方案. 平滑发布的核心思想就是:所有服务的调用者不再调用该服务了就表示安全的将服务kill掉. 另外actu ...
- Python将print输出内容保存到指定文件中
#!/usr/bin/python # -*- coding: utf- -*- import sys import os class Logger(object): def __init__(sel ...
- uni-app打包程序 Hbuilder X 用自有证书 苹果证书打包 ios App、用DCloud公用证书打包Android APP
Android用HBuilder的DCloud公用证书即可 HBuilderX uni-app打包成apk安装到手机首先要登录,没有帐号可以注册,接着点击运行—原生App-云打包,配置完后点击打包, ...
- pytorch ImageFolder的覆写
在为数据分类训练分类器的时候,比如猫狗分类时,我们经常会使用pytorch的ImageFolder: CLASS torchvision.datasets.ImageFolder(root, tran ...
- LeetCode_441. Arranging Coins
441. Arranging Coins Easy You have a total of n coins that you want to form in a staircase shape, wh ...
- prettier
prettier,是一个自以为是 Opinionated 的代码格式化工具,用来批量处理旧代码的统一. 涉及引号,分号,换行,缩进. prettier 支持我们大前端目前大部分语言处理,包括 Jav ...