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()