建造者模式
主要构建复杂的对象,和抽象工厂类似,建造者模式着重控制构造顺序
建造者模式使得对象的构建和表示分离,使同样的构建过程创建不同的表示
# encoding: utf-8
from abc import ABCMeta, abstractmethod
class phone(object):
def __init__(self,shell = None, os = None, cpu = None):
self.shell = shell
self.os = os
self.cpu = cpu
def __str__(self):
return "%s,%s,%s" % (self.shell,self.os,self.cpu)
#抽象建造者
class AbsPhoneBuilder(object):
__metaclass__ = ABCMeta
def make_shell(self):
pass
def make_os(self):
pass
def make_cpu(self):
pass
#具体建造者
class PhoneBuilder(AbsPhoneBuilder):
def __init__(self):
self.phone = phone()
def make_shell(self):
self.phone.shell = "something"
print "制造手机壳"
def make_os(self):
self.phone.os = "someos"
print "安装系统"
def make_cpu(self):
self.phone.cpu = "somecpu"
print "制造cpu"
#指挥者
class PhoneDirector(object):
def build_phone(self,a_phone):
#控制组装顺序
a_phone.make_cpu()
a_phone.make_shell()
a_phone.make_os()
return a_phone.phone
#client
a_phone_build = PhoneBuilder()
p_director = PhoneDirector()
#开始生产
p = p_director.build_phone(a_phone_build)
print p
使同样的构建过程创建不同的表示
这句话的理解:PhoneDirector创建a_phone,你也可以创建b_phone,cpu什么得都不一样,等于不同的手机