网站建设资讯

NEWS

网站建设资讯

Python笔记之工厂模式-创新互联

工厂模式: “工厂”即表示一个负责创建其他类型的对象的类,通常情况下,一个工厂的对象会有一个或多个方法与之关联,这些方法用于创建不同类型的对象,工厂对象会根据客户端给方法传递的不同的参数或者客户端调用不同的方法返回不同的对象。

成都创新互联服务项目包括嘉定网站建设、嘉定网站制作、嘉定网页制作以及嘉定网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,嘉定网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到嘉定省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

优点:对象的创建是可以根据需要单独创建的,但是使用工厂模式来创建对象有以下优点:

  • 松耦合,对象的创建是根据工厂类来进行的,与类本身的实现是独立开来的。
  • 对于客户端来说,不需要知道类的具体实现,只需要调用相应接口就可以得到需要的对象了,这其实是简化了客户端的相关实现。
  • 对于对象的修改只需要在工厂里面进行即可,包括添加新的对象,客户端只需要更改少量的代码,甚至可以不修改代码就可以达到要求。
  • 使用工厂接口,还可以重用已有的对象,不用去别处调用已有的对象或者重新创建一个对象。

工厂模式的3种实现形式(或者说3中变体):

  • 简单工厂模式:工厂类会提供一个接口,并根据客户端传入参数来创建相应的实例对象。(创建一个对象)
  • 工厂方法模式:需要定义一个基类,不同的子类则代表着不同类型的对象。相对于简单工厂模式而言,工厂方法模式具有更强的可定制性。(创建一个对象)
  • 抽象工厂模式:需要定义一个抽象工厂类,然后由不同的子类来创建不同系列的对象,一个系列即代表一组对象。(创建一组对象)

简单工厂模式示例:

from abc import ABCMeta, abstractmethod


class Flower(metaclass=ABCMeta):
 @abstractmethod
 def show_price(self):
  pass


class Rose(Flower):
 def show_price(self):
  print('Rose price: $99')


class Tulip(Flower):
 def show_price(self):
  print('Tulip price: $66')


class FlowerSimpleFactory:
 def get_flower(self, flower_type):
  return eval(flower_type)()


if __name__ == '__main__':
 flower_factory = FlowerSimpleFactory()
 rose = flower_factory.get_flower('Rose')
 tulip = flower_factory.get_flower('Tulip')
 rose.show_price()
 tulip.show_price()

标题名称:Python笔记之工厂模式-创新互联
网站路径:http://cdweb.net/article/dcgodp.html