设计模式之建造者模式

来源:互联网 发布:betterzip 3.1.2 mac 编辑:程序博客网 时间:2024/05/29 13:54
# -*- coding: utf-8 -*-"""建造者模式的Python实现"""from abc import ABCMeta, abstractmethod#抽象建造者,此类规定具体建造者需要实现的方法class AbcBuilder(object):    __metaclass__ = ABCMeta         def __init__(self):         #product是用户需要的产品                  self.product = None           def newProduct(self):        self.product = Product()            @abstractmethod     def product_size(self):pass    @abstractmethod     def product_price(self):pass#具体建造者,规定具体的实现细节class ConcretBuilderA(AbcBuilder):    def product_size(self):        self.product.size = 'Big'            def product_price(self):        self.product.price = 50        class ConcretBuilderB(AbcBuilder):    def product_size(self):        self.product.size = 'Small'            def product_price(self):        self.product.price = 25#Product的实例是用户需要的最终产品    class Product():    def __init__(self):        self.size = None        self.price = None            def __repr__(self):        return 'Size: %s, price: %s.' % (self.size, self.price)#指挥者类集成了繁琐的建造步骤        class Director():    def __init__(self):        self.builder = None            def createProduct(self):        self.builder.newProduct()        self.builder.product_size()        self.builder.product_price()            def getProduct(self):        return self.builder.product        #Clientif __name__ == '__main__':    director = Director()        director.builder = ConcretBuilderA()    director.createProduct()    product = director.getProduct()    print(product)    director.builder = ConcretBuilderB()    director.createProduct()    product = director.getProduct()    print(product)             


0 0
原创粉丝点击