前面介绍过单例模式,单例模式的思想就是一个对象只有一个实例,当你想创建多个实例的时候也只会返回已存在的实例,并不会给你再次创建,这个会解决大量的实例常见和gc回收带来的消耗。不需要的额外的频繁操作。
今天来说一说工厂模式。既然是工厂,那么干的事情就会很多了,而且效率高,我们要维护一个工厂如果干事不利索那还办啥工厂,你说是不是,早就倒闭了。。。。。
说的闲话有点多了,开始工厂模式的介绍,通过举例来说明并给出代码。
博主最近开始做饼干服务了,通过广泛宣传接到一些单子:
广东地区需要制造一些圆形饼干,江苏需要制造一些三角形饼干,四川地区需要一些矩阵形状的饼干
哎,这些单子真的是各不相同,心中千万个曹尼玛,不过为了毛爷爷还是撸起袖子让厂房的机器开始干这些活。
class circle(object):
def __init__(self,data=''):
self.source=data
@staticmethod
def make_circle(data):
return '1'
def product(self):
return self.make_circle(self.source)
class triangle(object):
def __init__(self,data=''):
self.source=data
@staticmethod
def make_triangle(data):
return '2'
def product(self):
return self.make_triangle(self.source)
class rectangle(object):
def __init__(self,data=''):
self.source=data
@staticmethod
def make_rectangle(data):
return '3'
def product(self):
return self.make_rectangle(self.source)
def product(location):
loc={'guangdong':circle,'jiangsu':triangle,'sichuan':rectangle}
return loc[location]().product()
print product('jiangsu')
print product('guangdong')
print product('sichuan')
运行结果如下所示
PS C:\Users\boostcj\Desktop> python .\Untitled-1.py
2
1
3
通过上面博主建立的工厂只要给定需要饼干的地方位置信息,就可以自动生产出对应的饼干,哈哈,这是多么的方便,以后如果有其他需要直接增量式开发就好了,一切都是这么so easy
上面是一个简单的工厂模式,此外还有一个稍微难以理解的抽象工厂模式,其实抽象工厂模式是可以完成更多的任务。博主的业务目前就是局限于饼干这一块,博主的业务做大了,挣钱多了,开始拓展新业务
现在开始包装水果了,就是在原来的基础上增加生产水果的功能,其实道理还是很简单的,假设广东地方的人喜欢吃苹果,我们在生产广东圆形饼干的时候顺道也要生产苹果,就是这么理解。