Python设计模式之工厂模式简单示例

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

工厂模式是一个在软件开发中用来创建对象的设计模式。

工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。

为了实现此方法,需要创建一个工厂类创建并返回。

当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。

简短的说,当以下情形可以使用工厂模式:

1.不知道用户想要创建什么样的对象
2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。

一个例子更能很好的理解以上的内容:

① 我们有一个基类Person ,包涵获取名字,性别的方法 。有两个子类male 和female,可以打招呼。还有一个工厂类。
② 工厂类有一个方法名getPerson有两个输入参数,名字和性别。
③ 用户使用工厂类,通过调用getPerson方法。

在程序运行期间,用户传递性别给工厂,工厂创建一个与性别有关的对象。因此工厂类在运行期,决定了哪个对象应该被创建。

class Person:
  def __init__(self):
    self.name = None
    self.gender = None
  def getName(self):
    return self.name
  def getGender(self):
    return self.gender
class Male(Person):
  def __init__(self, name):
    print "Hello Mr." + name
class Female(Person):
  def __init__(self, name):
    print "Hello Miss." + name
class Factory:
  def getPerson(self, name, gender):
    if gender == 'M':
      return Male(name)
    if gender == 'F':
      return Female(name)
if __name__ == '__main__':
  factory = Factory()
  person = factory.getPerson("Chetan", "M")

运行结果:

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

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

(0)

相关推荐

  • Python设计模式之门面模式简单示例

    本文实例讲述了Python设计模式之门面模式.分享给大家供大家参考,具体如下: facade:建筑物的表面 门面模式是一个软件工程设计模式,主要用于面向对象编程. 一个门面可以看作是为大段代码提供简单接口的对象,就像类库. 门面模式被归入建筑设计模式.门面模式隐藏系统内部的细节和复杂度,给用户提供一个简单的接口,采用门面模式,用户能够使用简单的接口进行工作,而不用担心系统的复杂. 理解门面模式最重要的一点就是它提供的简单接口是系统的一部分.因此提供简单易用的功能要胜过完整的功能. 门面模式的优点

  • Python设计模式之单例模式实例

    注:使用的是Python 2.7. 一个简单实现 复制代码 代码如下: class Foo(object):    __instance = None    def __init__(self):        pass    @classmethod    def getinstance(cls):        if(cls.__instance == None):            cls.__instance = Foo()        return cls.__instance

  • Python设计模式之代理模式实例

    翻墙常用的方式就是使用代理(Proxy),其基本过程如下: 浏览器<-->代理服务器<-->服务器 如果浏览器请求不到服务器,或者服务器无法响应浏览器,我们可以设定将浏览器的请求传递给代理服务器,代理服务器将请求转发给服务器.然后,代理服务器将服务器的响应内容传递给浏览器.当然,代理服务器在得到请求或者响应内容的时候,本身也可以做些处理,例如缓存静态内容以加速,或者说提取请求内容或者响应内容做些正当或者不正当的分析.这种翻墙方式,就是设计模式中代理模式(Proxy Pattern)

  • Python设计模式之命令模式简单示例

    本文实例讲述了Python设计模式之命令模式.分享给大家供大家参考,具体如下: 命令模式介绍: 在面向对象编程中,命令模式是概括所有方法信息的设计模式. 此模式对象包涵方法名,及其相关参数值. 命令模式是一个分类的观察者设计模式,在命令模式下,对象被概括为一个命令表单,此表单包涵了所有用户需要的方法. 举个例子:如果有个按钮是用户接口"red",当被触碰的时候,会启动后台的"turn red"接口.现在用户并不知道,通过什么类或者方法的接口能够让后台处理"

  • Python设计模式之MVC模式简单示例

    本文实例讲述了Python设计模式之MVC模式.分享给大家供大家参考,具体如下: 一.简单介绍 mvc模式  the  model-view-controller pattern mvc模式是一个运用在软件工程中的设计模式.mvc模式脱离了以前简单的web服务设计逻辑,将开发,测试和维护分离.在MVC模式中,应用被分解为相互作用的模块,模型,视图,控制.目的在于分离输入(control),处理逻辑(model),输出格式(view). 简单的理解: 1. 控制模块用于获取用户输入,并将模型与视图

  • Python设计模式之观察者模式实例

    关于设计模式中的观察者模式,定义如下(维基百科): 觀察者模式(有時又被稱為發布/訂閱模式)是軟體設計模式的一種.在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知.這通常透過呼叫各觀察者所提供的方法來實現.此種模式通常被用來實作事件處理系統.简单来说,一个被观察者有很多观察者,被观察者的状态的改变会引起所有观察者的响应操作. 那么我们用Python2.7来实现观察者模式. Python中的集合set 集合(set),类似于列表(list),但是它没有重

  • Python设计模式之中介模式简单示例

    本文实例讲述了Python设计模式之中介模式.分享给大家供大家参考,具体如下: Mediator Pattern:中介模式 中介模式提供了一系列统一的系统接口.此模式也被认为是行为模式,因为他能选择程序处理流程. 当许多类开始在交互中产生结果时,可以选用中介模式.当软件开始组织的时候,许多用户的要求添加更多的功能. 这就导致了要和以前的类不断交互,除了新类.随着系统的复杂度加大,类之间的交互变得频繁,维护代码变得困难. 中介模式 就是为了解决这个问题,通过允许类之间的松耦合.这样中介模式就能了解

  • python设计模式大全

    本文实例讲述了python常见的设计模式.分享给大家供大家参考,具体如下: # #!/usr/bin/env python # # -*- coding:utf-8 # # class HttpBase: # def get(self): # psss # class Http1(HttpBase): # def get(self): # print 'http1' # class Http2(HttpBase): # def get(self): # print 'http2' # # # c

  • Python设计模式之代理模式简单示例

    本文实例讲述了Python设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式在一般形式上是一个类函数接口.代理可以是这些事物的接口:网络连接,存储的对象,文件,或者其他资源(昂贵的或者不容易复制的). 一个众所周知的代理模式的例子就是引用计数的指针对象. 代理模式是结构设计模式的例子.这个模式的目的是要创建一个真实对象或类的代理. 代理模式有3个必要的元素: 1. 真实的对象(执行业务逻辑,被代理的对象) 2. 代理类(用户请求的一个接口,对真实目标的保护) 3. 用户(获取任务的用

  • Python设计模式之观察者模式简单示例

    本文实例讲述了Python设计模式之观察者模式.分享给大家供大家参考,具体如下: 观察者模式是一个软件设计模式,一个主题对象包涵一系列依赖他的观察者,自动通知观察者的主题对象的改变,通常会调用每个观察者的一个方法.这个设计模式非常适用于分布式事件处理系统. 典型的在观察者模式下: 1.发布者类应该包涵如下方法: 注册能够接收通知的对象 从主对象到注册对象,通知任何变化 未注册对象不能够接收任何通知信息 2.订购者类应该包涵如下: 发布者会调用一个订购者提供的方法,将任何改变告知注册对象. 3.当

随机推荐