zoukankan      html  css  js  c++  java
  • 大话设计模式Python实现-建造者模式

    建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    下面是一个建造者模式的demo

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 __author__ = 'Andy'
     5 
     6 """
     7 大话设计模式
     8 设计模式——建造者模式
     9 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以常见不同的表示
    10 特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Product
    11 """
    12 import abc
    13 class Builder(object):
    14     __metaclass__ = abc.ABCMeta
    15 
    16 
    17     @abc.abstractmethod
    18     def create_header(self):
    19         pass
    20 
    21     @abc.abstractmethod
    22     def create_body(self):
    23         pass
    24 
    25     @abc.abstractmethod
    26     def create_hand(self):
    27         pass
    28 
    29     @abc.abstractmethod
    30     def create_foot(self):
    31         pass
    32 
    33 class Thin(Builder):
    34 
    35     def create_header(self):
    36         print '瘦子的头'
    37 
    38     def create_body(self):
    39         print '瘦子的身体'
    40 
    41     def create_hand(self):
    42         print '瘦子的手'
    43 
    44     def create_foot(self):
    45         print '瘦子的脚'
    46 
    47 class Fat(Builder):
    48 
    49     def create_header(self):
    50         print '胖子的头'
    51 
    52     def create_body(self):
    53         print '胖子的身体'
    54 
    55     def create_hand(self):
    56         print '胖子的手'
    57 
    58     def create_foot(self):
    59         print '胖子的脚'
    60 
    61 class Director(object):
    62 
    63     def __init__(self, person):
    64         self.person = person
    65 
    66     def create_preson(self):
    67         self.person.create_header()
    68         self.person.create_body()
    69         self.person.create_hand()
    70         self.person.create_foot()
    71 
    72 
    73 if __name__=="__main__":
    74     thin = Thin()
    75     fat = Fat()
    76     director_thin = Director(thin)
    77     director_fat = Director(fat)
    78     director_thin.create_preson()
    79     director_fat.create_preson()

    上面类的设计如下图:

    指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的


    作者:Andy
    出处:http://www.cnblogs.com/onepiece-andy/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    web.xml 中的listener、 filter、servlet 加载顺序及其详解
    AOP概念的理解
    webx学习总结
    如何设计编制软件测试用例(一~三)
    冒烟测试小结(转载)
    在web.xml不认<taglib>解决办法
    document.domain 跨域问题【转】
    判断图片是否加载完成
    指定步长中间值
    关于 contentWindow, contentDocument
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-builder-pattern.html
Copyright © 2011-2022 走看看