大话设计模式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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/onepiece-andy/p/python-builder-pattern.html