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
更多精彩
赞助商链接