python-建造者模式

2017-06-08  本文已影响71人  KillerManA

首先上代码

# 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.被创建的对象拥有不同的表现形式

上一篇下一篇

猜你喜欢

热点阅读