python的Simple Factory模式

根据上图的simple factory代码为:

 

代码清单1:shape.py
class Shape:
# 绘制图形
def draw(self):
pass
# 擦除图形
def erase(self):
pass
代码清单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
代码清单3:rectangle.py
class Rectangle (Shape):
def __init__(self, width = 0, height = 0):
self.__width = width
self.__height = height
# 绘制矩形
def draw(self):
print "Draw Rectangle"
# 擦除矩形
def erase(self):
print "Erase Rectangle"
# 宽度的取值方法
def getWidth(self):
return self.__width
# 宽度的赋值方法
def setWidth(self, width):
self.__width = width
# 高度的取值方法
def getHeight(self):
return self.__height
# 高度的赋值方法
def setHeight(self, height):
self.__height = height

代码清单4:diamond.py
class Diamond (Shape):
def __init__(self, width = 0, height = 0):
self.__width = width
self.__height = height
# 绘制菱形
def draw(self):
print "Draw Diamond"
# 擦除菱形
def erase(self):
print "Erase Diamond"
# 宽度的取值方法
def getWidth(self):
return self.__width
# 宽度的赋值方法
def setWidth(self, width):
self.__width = width
# 高度的取值方法
def getHeight(self):
return self.__height
# 高度的赋值方法
def setHeight(self, height):
self.__height = height
代码清单5:shapefactory.py
class ShapeFactory:
def factory(self, which):
if which == "Circle":
return Circle()
elif which == "Rectangle":
return Rectangle()
elif which == "Diamond":
return Diamond()
else:
return None

使用simple factory的简单例子:
fac = ShapeFactory()
shape = fac.factory("Diamond")
if shape != None:
shape.draw()

 

 

 

 

posted @ 2011-02-24 14:49  Charliee  阅读(1240)  评论(0编辑  收藏  举报