zoukankan      html  css  js  c++  java
  • Builder(建造者)

    意图:

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    适用性:

    当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

    当构造过程必须允许被构造的对象有不同的表示时。

    #!/usr/bin/python
    #coding:utf8
     
    """
        Builder
    """
     
    # Director
    class Director(object):
        def __init__(self):
            self.builder = None
     
        def construct_building(self):
            self.builder.new_building()
            self.builder.build_floor()
            self.builder.build_size()
     
        def get_building(self):
            return self.builder.building
     
     
    # Abstract Builder
    class Builder(object):
        def __init__(self):
            self.building = None
     
        def new_building(self):
            self.building = Building()
     
     
    # Concrete Builder
    class BuilderHouse(Builder):
        def build_floor(self):
            self.building.floor = 'One'
     
        def build_size(self):
            self.building.size = 'Big'
     
     
    class BuilderFlat(Builder):
        def build_floor(self):
            self.building.floor = 'More than One'
     
        def build_size(self):
            self.building.size = 'Small'
     
     
    # Product
    class Building(object):
        def __init__(self):
            self.floor = None
            self.size = None
     
        def __repr__(self):
            return 'Floor: %s | Size: %s' % (self.floor, self.size)
     
     
    # Client
    if __name__ == "__main__":
        director = Director()
        director.builder = BuilderHouse()
        director.construct_building()
        building = director.get_building()
        print(building)
        director.builder = BuilderFlat()
        director.construct_building()
        building = director.get_building()
        print(building)
  • 相关阅读:
    python学习第三 天-字典
    购物车
    python学习第二天-字符串
    python学习第二天-元组
    git 工作流中的 Sourcetree 和命令行操作对比
    服务端推送通信技术及其优劣势
    关于立即调用的函数表达式(IIFE)
    序列化和反序列化
    mac 使用 brew 安装 nginx 及各种命令
    前端安全问题之CSRF和XSS
  • 原文地址:https://www.cnblogs.com/navysummer/p/9835101.html
Copyright © 2011-2022 走看看