• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

技术篇-每日一篇0x5-python工厂模式

Python admin 2年前 (2018-03-25) 1722次浏览 0个评论 扫描二维码

前面介绍过单例模式,单例模式的思想就是一个对象只有一个实例,当你想创建多个实例的时候也只会返回已存在的实例,并不会给你再次创建,这个会解决大量的实例常见和 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

上面是一个简单的工厂模式,此外还有一个稍微难以理解的抽象工厂模式,其实抽象工厂模式是可以完成更多的任务。博主的业务目前就是局限于饼干这一块,博主的业务做大了,挣钱多了,开始拓展新业务
现在开始包装水果了,就是在原来的基础上增加生产水果的功能,其实道理还是很简单的,假设广东地方的人喜欢吃苹果,我们在生产广东圆形饼干的时候顺道也要生产苹果,就是这么理解。


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明技术篇-每日一篇 0x5-python 工厂模式
喜欢 (1)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!