脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python设计模式之工厂方法模式实例详解

Python设计模式之工厂方法模式实例详解

2021-05-18 00:29Andy冉明 Python

这篇文章主要介绍了Python设计模式之工厂方法模式,结合实例形式较为详细的分析了工厂方法模式的概念、原理、用法及相关操作技巧,需要的朋友可以参考下

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/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()

运行结果:

买米
扫地
洗衣

上面类的设计如下图:

Python设计模式之工厂方法模式实例详解

创建一个抽象工厂类createleifeng和一个抽象对象类leifeng,当创建具体leifeng对象-undergradiate去dosomething时,使用继承抽象工厂的undergraduatefactory工厂类,该类返回一个undergradiate实例,如果还要去做另一个dosomething时,再创建一个volunteerfactory工厂方法创建创建一个volunteer实例就可以了

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

原文链接:https://www.cnblogs.com/onepiece-andy/p/python_factory_method_pattern.html

延伸 · 阅读

精彩推荐