Python--设计模式--工厂模式
1.工厂模式
工厂模式是一个在软件开发中用来创建对象的设计模式。
工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。
为了实现此方法,需要创建一个工厂类创建并返回。
当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。
简短的说,当以下情形可以使用工厂模式:
1.不知道用户想要创建什么样的对象
2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。
1 工厂模式: 2 3 企业<------>应聘者 4 5 企业<------>学校<------>学生 6 7 class Studnet(object): 8 def __init__(self): 9 self.subject = None 10 11 class pythonStudent(Studnet): 12 def __init__(self, subject): 13 self.subject = subject 14 def __str__(self): 15 return '我擅长%s'%self.subject 16 17 class javaStudent(Studnet): 18 def __init__(self, subject): 19 self.subject = subject 20 def __str__(self): 21 return '我擅长%s' % self.subject 22 23 class School(): 24 def __init__(self): 25 pass 26 27 # 根据公司不同的需求培养不同的学生 28 def cultivate(self, need): 29 if need == 'python': 30 return pythonStudent('python') 31 elif need == 'java': 32 return javaStudent('java') 33 34 class company(): 35 def __init__(self, name): 36 self.name = name 37 38 # 公司招聘方法-> 返回一个招聘的学生对象 39 def recruitment(self, subject): 40 # 创建一个学校对象 41 self.school = School() 42 # 通过学校帮助培养 43 stu = self.school.cultivate(subject) 44 return stu 45 46 company1 = company("蚂蚁金服") 47 stu = company1.recruitment("java") 48 # 默认调用当前类的__str__()方法,如果当前类中没有重写,调用父类的 49 print(stu) 50 # print(stu.__str__())