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