美文网首页
python-建造者模式

python-建造者模式

作者: KillerManA | 来源:发表于2017-06-08 23:53 被阅读71次

    首先上代码

    # Director
    class Director(object):
        def __init__(self):
            self.builder = None
    
        def construct_building(self):
            self.builder.new_building()
            self.builder.build_brand()
            self.builder.build_size()
            self.builder.build_ssd()
    
        def get_building(self):
            return self.builder.computer_building
    
    
    # Abstract Builder
    class Computer(object):
        def __init__(self):
            self.computer_building = None
    
        def new_building(self):
            self.computer_building = ComputerBuilding()
    
    
    # Concrete Builder
    class Apple(Computer):
        def build_brand(self):
            self.computer_building.brand = 'Apple'
    
        def build_size(self):
            self.computer_building.size = '15寸'
            
        def build_ssd(self):
            self.computer_building.ssd = '256G'
    
    
    class Acer(Computer):
        def build_brand(self):
            self.computer_building.brand = 'Acer'
    
        def build_size(self):
            self.computer_building.size = '17寸'
            
        def build_ssd(self):
            self.computer_building.ssd = '512G'
    
    
    # Product
    class ComputerBuilding(object):
        def __init__(self):
            self.brand = None
            self.size = None
            self.ssd = None
    
        def __repr__(self):
            return 'Brand: %s | Size: %s | Ssd: %s' % (self.brand, self.size, self.ssd)
    
    
    # Client
    if __name__ == "__main__":
        # 指挥者
        director = Director()
        # 新建个苹果建造者
        director.builder = Apple()
        director.construct_building()
        building = director.get_building()
        print(building)
        # 新建宏基建造者
        director.builder = Acer()
        director.construct_building()
        building = director.get_building()
        print(building)
    
    

    建造这主要有三个类:
    1.指挥者
    2.建造者
    3.建造的东西(抽象出来一个抽象类)

    就从例子里面来说:
    1.指挥者
    2.建造电脑的
    3.电脑类(抽象了一个电脑类)

    过程:
    指挥者负责只会建造者的一系列动作,然后建造者负责电脑的组建有哪些,然后个电脑类开始建造,
    电脑类可以扩展更多的功能,比如升级其它的。

    在抽象工厂模式中,抽象出了创建方法,使用者只能按照预定好的步骤新创建一个对象。
    在建造者模式中,使用者可以按照自己的想法,在合理的范围内定制自己所需要的对象。

    所以当有一下情况时候,需要考虑使用建造者模式:
    1.对象的创建步骤可以独立于创建过程的时候
    2.被创建的对象拥有不同的表现形式

    相关文章

      网友评论

          本文标题:python-建造者模式

          本文链接:https://www.haomeiwen.com/subject/dqhxqxtx.html