本文实例讲述了Python设计模式之工厂方法模式。分享给大家供大家参考,具体如下:

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类.

#!/usr/bin/env python

# -*- coding:utf-8 -*-

__author__ = 'Andy'

"""

大话设计模式

设计模式——工厂方法模式

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类.

工厂方法模式克服了简单工厂模式违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点

场景:雷锋工厂,不关心执行者,只关心执行结果

"""

class LeiFeng(object):

def Sweep(self):

print "扫地"

def Wash(self):

print "洗衣"

def BuyRice(self):

print "买米"

class IFactory(LeiFeng):

def CreateLeiFeng(self):

pass

#大学生

class Undergraduate(LeiFeng):

pass

#新增社区服务者

class Volunteer(LeiFeng):

pass

# 学习雷锋的大学生工厂

class UndergraduateFactory(IFactory):

def CreateLeiFeng(self):

return Undergraduate()

#新增一个社区服务者的工厂e

class VolunteerFactory(IFactory):

def CreateLeiFeng(self):

return Volunteer()

if __name__ == "__main__":

student = UndergraduateFactory()

volunteer = VolunteerFactory()

student.BuyRice()

student.Sweep()

volunteer.Wash()

运行结果:

买米

扫地

洗衣

上面类的设计如下图:

创建一个抽象工厂类CreateLeiFeng和一个抽象对象类LeiFeng,当创建具体leifeng对象-Undergradiate去dosomething时,使用继承抽象工厂的UndergraduateFactory工厂类,该类返回一个Undergradiate实例,如果还要去做另一个dosomething时,再创建一个VolunteerFactory工厂方法创建创建一个Volunteer实例就可以了

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python设计模式之工厂方法模式实例详解

本文地址: http://www.cppcns.com/jiaoben/python/250284.html

python类是实例的工厂_Python设计模式之工厂方法模式实例详解相关推荐

  1. python中paste函数的作用_PIL图像处理模块paste方法简单使用详解

    python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在 ...

  2. python中布尔类型是特殊的_Python中的特殊方法以及应用详解

    前言 Python 中的特殊方法主要是为了被解释器调用的,因此应该尽量使用 len(my_object) 而不是 my_object.__len__() 这种写法.在执行 len(my_object) ...

  3. python标准库对象导入语句_Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

  4. python中subplot是什么意思_python matplotlib中的subplot函数使用详解

    python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包.基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数.于是,为了节省时间,可以一劳 ...

  5. python中seek(10、1)_Python中index()和seek()的用法(详解)

    1.index() 一般用处是在序列中检索参数并返回第一次出现的索引,没找到就会报错,比如: >>> t=tuple('Allen') >>> t ('A', 'l ...

  6. 工厂模式(简单工厂模式和工厂方法模式)详解

    简单工厂模式 (Simple Factory Pattern) 工厂方法模式 (Factory Method Pattern) 工厂模式: 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一 ...

  7. python适配器模式角色_Python设计模式之适配器模式原理与用法详解

    本文实例讲述了Python设计模式之适配器模式原理与用法.分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配 ...

  8. python中command是什么意思_python 设计模式之命令(Command)模式

    #写在前面 也了解了不少设计模式了,他们都有一个通病,那就是喜欢把简单的东西复杂化.比如在不同的类中加个第三者.哈哈哈,简单变复杂是有目的的,那就是降低耦合度,增强可维护性,提高代码复用性,使代码变得 ...

  9. python类的实例方法必须创建对象后_Python3 类方法,实例方法,静态方法详解...

    类对象和实例对象 类:Python中一切皆为对象,对象是抽象的,Python中的对象用类来表示.而在实示使用时,通常会找到类具体的存在. 在 Python 中,类 是一个特殊的对象 -- 类对象. 在 ...

最新文章

  1. Python零基础学习代码实践 —— 提取字符串里面的单词数
  2. Oracle-PL/SQL语法基础
  3. 专业网络推广浅析单页面网站如何高效做SEO优化?
  4. python自带库处理excel-【Python】处理Excel的库Xlwings
  5. CentOS启动不显示图形界面直接进入命令行模式
  6. 【Python】sort 和 sorted 的用法区别
  7. biztalk在用户代码中构造多部分消息
  8. 阿里云飞天洛神2.0:开放弹性的云网络NFV平台
  9. 智慧城市建设亟待突破大数据瓶颈
  10. Springboot应用中线程池配置教程(2021版)
  11. 长三角协同优势产业基金正式设立,总规模1000亿
  12. 小米路由器r3gv2/r4a Lean的OpenWrt固件
  13. 用计算机解数独,6宫格数独计算器
  14. Azure 安全网络篇 - DMZ 区域设计实践
  15. 【历史上的今天】10 月 17 日:微软发布 Windows 8.1;IMDb 成立;海盗湾创始人诞生
  16. 一篇很好的EDP入门介绍文章——了解AUX,PSR,ASSR 以及EDP版本的差异
  17. 微信小程序OTO商城(客户端)
  18. 做VC投资,你看我还有机会吗?-常垒季度专栏
  19. Wilcoxon signed-rank test and U-statistics
  20. Jsoup-jar包下载

热门文章

  1. 加入 Spring 技术学习群
  2. 华为:0元 + 3个月 = WEB全栈前端工程师
  3. 「图解」ThreadLocal 在并发问题中的应用
  4. 每日一问一周汇总:第1期
  5. zabbix 3.2 mysql模板_Zabbix-3.0.3使用自带模板监控MySQL
  6. Java-反射简介及例子
  7. 超强实时人像抠图算法开源,随心所欲背景替换!
  8. python字典随机取数
  9. eltwise_layer.cpp:170: error: (-215:Assertion failed) inputs.size() = 2 in function 'cv::dnn::Eltwi
  10. 结构体中string类型成员