构造者

一个复杂系统中的对象,往往都十分复杂。这种复杂对象在进行创建时,总是十分麻烦的。尤其是使用构造函数进行初始化,需要传递很长的参数,这常常会使人忘记每一个参数的用途和目的。将一个复杂对象的构建和表示分离,是构造者模式最主要的目标。

以下提供一个构造者模式的示例。

class Cake:

	__name = ""
	__taste = "sweet"
	
	def __init__(self):
		pass
	
	@property
	def taste(self):
		return self.__taste
	
	@taste.setter
	def taste(self, value):
		self.__taste = value
	
	@property
	def name(self):
		return self.__name
	
	@name.setter
	def name(self, value):
	self.__name = value
	
	def __str__(self):
		return "{0} taste {1}".format(self.__name, self.__taste)


class CakeBuilder:
	
	def __init__(self):
		self.__cake = Cake()
	
	def name(self, value):
		self.__cake.name = value
		return self
	
	def taste(self, value):
		self.__cake.taste = value
		return self
	
	def build(self):
		return self.__cake


waffle = CakeBuilder().name("Waffle").taste("sweet").build()
print(waffle)