Python 设计模式系列之二: 创建型 Simple Factory 模式

来源: 作者: 2007-10-24 出处:pcdog.com

python  
下一页 1 2 3 4 5 6 7 8 

本文示例源代码下载

  软件设计大师总是要比初学者更加清楚该如何设计软件,因为他们手中掌握着设计模式这一法宝。作为一种高级的软件复用形式,设计模式是众多优秀软件设计师集体智慧的结晶,能够很好地指导软件设计过程。本系列文章讲述如何在用Python开发软件时应用各种设计模式,此次介绍的是创建型简单工厂(Simple factory)模式。

  一、创建型模式

  创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够使软件模块做到与对象创建和组织的无关性。为了使体系结构更加清晰,一些软件在设计上要求当创建类的具体实例时,能够根据具体的语境来动态地决定怎样创建对象,创建哪些对象,以及怎样组织和表示这些对象,而创建型模式所要描述的就是该如何来解决这些问题。

  按照生成目标的不同,创建型模式可以分为类的创建型模式和对象的创建型模式两种:

  类的创建型模式

  类的创建型模式通过使用继承关系,将类的创建交由具体的子类来完成,这样就向外界隐藏了如何得到具体类的实现细节,以及这些类的实例是如何被创建和组织在一起的。

  对象的创建型模式

  对象的创建型模式通过把对象的创建委托给另一个对象来完成,可以根据语境动态地决定生成哪些具体类的实例,同时还可以向外界隐藏这些实例是如何被创建以及如何被组织在一起的细节。

  所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来;第二,它们隐藏了这些类的实例是如何被创建和组织的。外界对于这些对象只知道它们共同的接口,而不清楚其具体的实现细节。正因如此,创建型模式在创建什么(what),由谁(who)来创建,以及何时(when)创建这些方面,都为软件设计者提供了尽可能大的灵活性。

  具体到Python来说,假设有这样一个类:

class Person:
  def __init__(self, name):
    self.name = name

  要创建该类的一个实例,则应该执行下面的语句:

p = Person("Gary")

  但如果创建对象时完成的工作非常复杂,需要一段很长的代码,你就不能简单地将其全部写入__init__方法中,因为这会违背面向对象思想的两个基本原则:封装(encapsulation)和委派(delegation)。假如执意要做样做,结果只会使你的代码变成一段行为固定的硬编码(hard coding),而整个软件的结构都极有可能变得非常糟糕,因为其它某个模块也许就正依赖于你所创建的这个实例,这样就在无形之间增加了模块之间的耦合度。


更多内容请看PCdog.com--Python编程  Python设计模式  Python相关文章专题
下一页 1 2 3 4 5 6 7 8 
上一篇:Python设计模式系列之三: 创建型Factory Method模式
下一篇:Python设计模式系列之四: 创建型Abstract Factory模式