標籤:acl builder cts rect pycharm env __init__ ping floor
1. 建造者模式UML圖
2.應用情境
(1)專門建立具有符合屬性的對象
3.代碼實現
#!/usr/bin/env python#! _*_ coding: UTF-8 _*_from abc import ABCMeta, abstractmethodclass House(object): def __init__(self): pass def makeFloor(self, floor): self.floor = floor def makeWall(self, wall): self.wall = wall def getFloor(self): return self.floor def getWall(self): return self.wallclass Builder(object): __metaclass__ = ABCMeta @abstractmethod def makeFloor(self): pass @abstractmethod def makeWall(self): pass @abstractmethod def getHouse(self): pass @abstractmethod def getHouse(self): passclass PingFangBuilder(Builder): def __init__(self): self.house = House() def makeFloor(self): self.house.makeFloor("平房地板") def makeWall(self): self.house.makeWall("平房牆") def getHouse(self): return self.houseclass Director(object): def __init__(self, builder): self.__builder = builder def makeHouse(self): self.__builder.makeFloor() self.__builder.makeWall()if __name__ == "__main__": ‘‘‘使用最原始的方式‘‘‘ house = House() house.makeFloor("地板") house.makeWall("牆") print house.getFloor() print house.getWall() ‘‘‘使用建造者模式‘‘‘ builder = PingFangBuilder() director = Director(builder) director.makeHouse() house = builder.getHouse() print house.getFloor() print house.getWall()
結果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day7_builder/builder_test.py地板牆平房地板平房牆Process finished with exit code 0
python設計模式第七天【建造者模式】