Python 建造者模式

# -*- coding: utf-8 -*-
"""
Created on Thu Mar 29 10:19:38 2018

@author: mz
"""

class Director(object):
    def Build(self, builder):        
        builder.BuildFloor()
        builder.BuildWindow()

class Builder(object):
    def __init__(self, product):
        self._product = product
    
    def BuildWindow(self):
        pass
    
    def BuildFloor(self):
        pass

class Product(object):
    def BuildWindow(self, window):
        self._window = window
    
    def BuildFloor(self, floor):
       self._floor = floor
       
    def Show(self):
        print(self._window, self._floor)

class ABuilder(Builder):
    def BuildWindow(self):
        self._product.BuildWindow("A builds Blue window\r\n")
    
    def BuildFloor(self):
        self._product.BuildFloor("A builds white floor\r\n")

class BBuilder(Builder):
    def BuildWindow(self):
        self._product.BuildWindow("B builds transparent window\r\n")
    
    def BuildFloor(self):
        self._product.BuildFloor("B builds gray floor\r\n")

if "__main__" == __name__:
    director = Director()
    product = Product()
    
    print('---a builder---')
    a = ABuilder(product)
    a.BuildFloor()
    a.BuildWindow()
    
    product.Show()
    
    print('---b builder---')
    b = BBuilder(product)
    b.BuildFloor()
    b.BuildWindow()
    
    product.Show()
    
    

运行结果:

---a builder---
A builds Blue window
 A builds white floor

---b builder---
B builds transparent window
 B builds gray floor

猜你喜欢

转载自blog.csdn.net/mz5111089/article/details/79739425