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__())

 

posted @ 2018-04-03 16:34  TiAmo_yu  阅读(180)  评论(0编辑  收藏  举报