Python 设计模式之路(三)——建造者模式
本节内容
- 什么是建造者者模型
- 适用场景
- 代码描述
一、什么是建造者模型
建造者(Builder)模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
二、适用场景
- 当构建复杂对象的算法独立于对象的组成部分时
- 当构建过程必须由构建的对象不同表示时
三、代码描述
本文摘自《Python设计模式——建造者模式》
需求:画一个胖子和一个瘦子
from abc import ABCMeta, abstractmethod
class Builder():
__metaclass__ = ABCMeta
@abstractmethod
def draw_left_arm(self):
pass
@abstractmethod
def draw_right_arm(self):
pass
@abstractmethod
def draw_left_foot(self):
pass
@abstractmethod
def draw_right_foot(self):
pass
@abstractmethod
def draw_head(self):
pass
@abstractmethod
def draw_body(self):
pass
class Thin(Builder):
def draw_left_arm(self):
print('画左手')
def draw_right_arm(self):
print('画右手')
def draw_left_foot(self):
print('画左脚')
def draw_right_foot(self):
print('画右脚')
def draw_head(self):
print('画头')
def draw_body(self):
print('画瘦身体')
class Fat(Builder):
def draw_left_arm(self):
print('画左手')
def draw_right_arm(self):
print('画右手')
def draw_left_foot(self):
print('画左脚')
def draw_right_foot(self):
print('画右脚')
def draw_head(self):
print('画头')
def draw_body(self):
print('画胖身体')
class Director():
def __init__(self, person):
self.person=person
def draw(self):
self.person.draw_left_arm()
self.person.draw_right_arm()
self.person.draw_left_foot()
self.person.draw_right_foot()
self.person.draw_head()
self.person.draw_body()
if __name__=='__main__':
thin=Thin()
fat=Fat()
director_thin=Director(thin)
director_thin.draw()
director_fat=Director(fat)
director_fat.draw()
浙公网安备 33010602011771号