Python设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
所有的设计模式示例都是来源于 菜鸟教程 ,每个设计模式的UML都可以在菜鸟教程中找到相应的示例
github地址:Python设计模式
以工厂模式为例:
工厂模式在菜鸟教程中的UML图为
工厂模式在github中的代码为:
import abc
class Shape(metaclass=abc.ABCMeta):
@abc.abstractmethod
def draw(self):
pass
class Circle(Shape):
def draw(self):
print("Inside Rectangle::draw() method.")
class Square(Shape):
def draw(self):
print("Inside Square::draw() method.")
class Rectangle(Shape):
def draw(self):
print("Inside Circle::draw() method.")
class ShapeFactory(object):
def getShape(self, shapeType):
if shapeType=="CIRCLE":
return Circle()
elif shapeType=="RECTANGLE":
return Rectangle()
elif shapeType=="SQUARE":
return Square()
else:
return None
if __name__ == '__main__':
'''
工厂模式的优点:
1. 一个调用者想创建一个对象,只要知道其名称
2. 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
3. 屏蔽产品的具体实现,调用者只关心产品的接口
'''
shapeFactory = ShapeFactory()
# 获取Cicle、Rectangle、Square的对象
shape1 = shapeFactory.getShape("CIRCLE")
shape2 = shapeFactory.getShape("RECTANGLE")
shape3 = shapeFactory.getShape("SQUARE")
#分别调用draw()方法
shape1.draw()
shape2.draw()
shape3.draw()
在main的注释部分我会给出该设计模式的优点,并且在main中给出该示例的客户端调用