首页 > 编程语言 > 详细

python设计模式第七天【建造者模式】

时间:2018-08-12 16:35:39      阅读:169      评论:0      收藏:0      [点我收藏+]

1. 建造者模式UML图

技术分享图片

2.应用场景

(1)专门创建具有符合属性的对象

3.代码实现

 

#!/usr/bin/env python
#! _*_ coding: UTF-8 _*_

from abc import ABCMeta, abstractmethod

class 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.wall

class Builder(object):

    __metaclass__ = ABCMeta

    @abstractmethod
    def makeFloor(self):
        pass

    @abstractmethod
    def makeWall(self):
        pass

    @abstractmethod
    def getHouse(self):
        pass

    @abstractmethod
    def getHouse(self):
        pass


class 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.house


class 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设计模式第七天【建造者模式】

原文:https://www.cnblogs.com/liuzhiqaingxyz/p/9463033.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!