版本: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)