Python设计模式——建造者模式
2015-03-07 09:13
337 查看
建造者模式(Builder Pattern):它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
也许在以下情况使用到它:
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
当构造过程必须允许被构造的对象有不同的表示时。
参与者:
AbstractBuilder
为创建一个Product对象的各个部件指定抽象接口。
Builder
实现AbstractBuilder的接口以构造和装配该产品的各个部件。定义并明确它所创建的表示。提供一个检索产品的接口
director
构建Builder
接下来就是客户端代码了:
在构建具体项目的时候只需要适当改变就可以了
也许在以下情况使用到它:
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
当构造过程必须允许被构造的对象有不同的表示时。
参与者:
AbstractBuilder
为创建一个Product对象的各个部件指定抽象接口。
class AbstractFormBuilder(object): """ 使用abc库中的方法构建抽象类为Python中一种构建抽象类的方法(会有性能上的损耗) """ __metaclass__ = abc.ABCMeta @abc.abstractmethod def add_a(self): pass @abc.abstractmethod def add_b(self): pass
Builder
实现AbstractBuilder的接口以构造和装配该产品的各个部件。定义并明确它所创建的表示。提供一个检索产品的接口
""" 分别创建了两个不同的具体建造者类 """ class BuilderA(AbstractFormBuilder): def __init__(self): self.product = [] def add_a(self): self.product.append('a_a') def add_b(self): self.product.append('a_b') def __str__(self): result = '' for i in self.product: result += '产品:' + i + ' ' return result class BuilderB(AbstractFormBuilder): def __init__(self): self.product = [] def add_a(self): self.product.append('b_a') def add_b(self): self.product.append('b_b') def __str__(self): result = '' for i in self.product: result += '产品:' + i + ' ' return result
director
构建Builder
def direcotr(builder): builder.add_a() builder.add_b()
接下来就是客户端代码了:
def main(): builder_a = BuilderA() builder_b = BuilderB() direcotr(builder_a) print builder_a direcotr(builder_b) print builder_b
在构建具体项目的时候只需要适当改变就可以了
相关文章推荐
- 设计模式之python版(九)--建造者模式
- python设计模式之建造者
- 设计模式六(建造者模式,采用python实现)
- 设计模式-建造者模式-builder-python
- 深入解析Python设计模式编程中建造者模式的使用
- Python设计模式——建造者模式
- Python的创建型设计模式之建造者模式
- Python设计模式-建造者模式
- Python设计模式--建造者模式
- [Python设计模式] 第13章 造小人——建造者模式
- python设计模式(二):建造者模式
- 深入解析Python设计模式编程中建造者模式的使用
- Python设计模式(7)-建造者模式
- python设计模式(建造者模式)
- 设计模式之建造者模式
- Python中单例设计模式
- python重温设计模式===>结构型
- python3设计模式之简单工厂模式
- 23种设计模式之python实现--职责链模式
- 【秒懂设计模式】建造者模式