Python设计模式(工厂模式)笔记

版本:Python3.6.1

# coding = utf - 8
"""
time:2018年4月2日 16:17:43
function:设计模式---工厂模式
"""

"""
工厂模式是一个在软件开发中用来创建对象的设计模式。
实现代码基于工厂模式,可以达到可扩展,可维护的代码
例子说明:
    需求:
        某公司需要招聘一些人才
    分析:
        普通分析:
            公司直接去招聘人才(一个一个面试,难度高)
            
        工厂分析:
            公司通过一个学校招聘人才
                学校培训人才,有相关的技能培训
                    公司找到学校,告诉学校需要什么人才
                        学校根据需求,在相关人才中查找
                            人才又开分几种人才,学校根据需求查找
    
    
    进度分析
        公司
          --> 学校
                -->人才 
                     -->人才1(技能)
                     -->人才2(技能)
                     -->人才3(技能)

"""

#代码演示
#首先我们找的是人才,那么我们以人才一个类
class talents():
    def __init__(self,name):
        self.name = name

    def __str__(self):
        return "找到人才会:%s"%self.name

#人才1(技能:会c),需要拥有人才的属性与方法(名字,年龄....),
# 我们需要一个以人才为父类,子类则有自己独特技能
class talentsC(talents):
    def __init__(self,name):
        super(talentsC,self).__init__(name)

#人才2(技能:会JAVA)
class talentsJava(talents):
    def __init__(self,name):
        super(talentsJava,self).__init__(name)
#人才3(技能:会PYTHON)
class talentsPython(talents):
    def __init__(self,name):
        super(talentsPython,self).__init__(name)


#学校(中介)或称为 工厂类
class school():
    def __init__(self,name):
        self.name = name

    #学校需要一个方法查找人才(工厂方法)
    def cultivate(self,need):
        #根据公司需求找不同的人才
        if need == "c":
            return  talentsC("C")  #需要c的人才
        elif need == "java":
            return  talentsJava("Java")   #需要java的人才
        elif need == "python":
            return  talentsPython("Python") #需要python的人才

#公司(需求方)
class company():
    def __init__(self):
        pass
    #把需求给学校,让学校去找,返回一个查找的对象
    def recruitment(self,subject):
        self.school_ = school("我是培训学校")
        return self.school_.cultivate(subject)

com = company()
sub = com.recruitment("python")
print(sub)

    原文作者:hccfm
    原文地址: https://blog.csdn.net/fm345689/article/details/80796919
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞