1、 简单工厂模式简介
- 含义:不直接向客户端暴露对此昂创建的实现细节,而是通过一个工厂类来负责创建产品类的实例
- 角色:工厂角色
- 优点:
隐藏了对象创建的细节,客户端不需要秀爱代码 - 缺点:
违反了单一职责原则,将创建逻辑集中到一个工厂类中,当添加新产品时,需要修改工厂类代码
2、简单工厂模式代码实现
- 代码如下:
from abc import ABCMeta,abstractmethod
class Person(metaclass=ABCMeta):
@abstractmethod
def get_name(self):
pass
@abstractmethod
def set_name(self,name):
pass
class Student(Person):
def __init__(self):
self.__name=""
def get_name(self):
return self.__name
def set_name(self,name):
self.__name=name
class Teacher(Person):
def __init__(self):
self.__name=""
def get_name(self):
return self.__name
def set_name(self,name):
self.__name=name
class PersonFactory(object):
def create_person(self,person):
if person=="teacher":
return Teacher()
if person=="student":
return Student()
raise TypeError("person is incorrect,person must be teacher or student ...")
if __name__=="__main__":
pf=PersonFactory()
s=pf.create_person("student")
t=pf.create_person("teacher")
s.set_name("Tom")
t.set_name("Mr Jack")
print(s.get_name())
print(t.get_name())
执行结果如下:
Tom
Mr Jack