WEB开发网
开发学院软件开发Python Python 设计模式系列之二: 创建型 Simple Factory... 阅读

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

 2007-03-30 12:55:53 来源:WEB开发网   
核心提示: 二、模式引入简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,Python 设计模式系列之二: 创建型 Simple Factory 模式(3),这种模式根据外界给定的信息,由"工厂"对

二、模式引入

简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式。这种模式根据外界给定的信息,由"工厂"对象"制造"出某些可能"产品"类中的一个实例,工厂对象能够处理的所有类通常都继承于同一个父类,并且对外界提供基本相同的接口,只不过在具体实现时会有所差别罢了。

假设我们要开发一个绘图程序,用来绘制简单的几何图形,这个软件应该能够处理下面的几种几何对象:

圆形(Circle)

矩形(Rectangle)

菱形(Diamond)

除了各自特有的属性和方法之外,所有的几何图形几乎都可以抽象出绘制(draw)和擦除(erase)两个公共方法,因而可以为它们定义一个共同的接口Shape。虽然Python语言本身并不支持接口,但为了更好地阐明设计模式的思想,有时我们还是会借用一下UML中的接口这一概念。这样一来,各个类之间的关系就将如图1所示:

图1

Shape接口定义了所有几何图形都必须实现的公共方法: draw()和erase(),实现该接口的Python代码如下所示,Python中没有接口的概念,因此在具体实现时可以使用类来替代。

代码清单1:shape.py
class Shape:
  # 绘制图形
  def draw(self):
    pass
  # 擦除图形
  def erase(self):
    pass

Circle类是Shape的一种具体形式,它实现了Shape接口定义的所有方法,此外还添加了一个属性__radius,用来表示圆的半径。以下是实现Circle类的代码:

代码清单2:circle.py
class Circle (Shape):
  def __init__(self, radius = 0):
    self.__radius = radius
  # 绘制圆形
  def draw(self):
    print "Draw Circle"
  # 擦除圆形
  def erase(self):
    print "Erase Circle"
  # 半径的取值方法
  def getRadius(self):
    return self.__radius
  # 半径的赋值方法
  def setRadius(self, radius):
    self.__radius = radius

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

Tags:Python 设计模式 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接