zoukankan      html  css  js  c++  java
  • Python 简单工厂模式

    简单工厂模式,说起这个概念,你可能比较陌生,但是在日常码代码中你一定不经意间用到过。

    1、类别

    简单工厂模式又称之为静态工厂方法,属于创建型模式。

    2、概念

    在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。

    3、原理

    简单工厂模式:通过接口创建对象,且不会暴露对象创建逻辑

    在设计模式中主要用于抽象对象的创建过程,让用户可以指定自己想要的对象而不必关心对象的实例化过程。

    这样做的好处是用户只需通过固定的接口而不是直接去调用类的实例化方法来获得一个对象的实例,隐藏了实例创建过程的复杂度,解耦了生产实例和使用实例的代码,降低了维护的复杂性。

    4、应用场景

    工厂类负责创建的对象比较少。简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,但是如果产品过多时,会导致工厂代码非常复杂。

    简单工厂模式的要点就在于当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

    5、Python 代码实现

     1 from abc import ABCMeta,abstractmethod
     2
     3 class Person(metaclass=ABCMeta):
     4    @abstractmethod
     5    def like(self):
     6        pass
     7
     8 class Man(Person):
     9    def like(self):
    10        print("man like play game")
    11
    12 class Woman(Person):
    13    def like(self):
    14        print("woman like shopping")
    15
    16 class SampleFactory(object):
    17    def display_like(self,object_type):
    18        print(eval(object_type)().like())
    19        return eval(object_type)().like()
    20
    21 if __name__ == '__main__':
    22    sf=SampleFactory()
    23    sf.display_like("Man")
    24    sf.display_like("Woman")

    6、执行结果

    1 man like play game
    2 None
    3 man like play game
    4 woman like shopping
    5 None
    6 woman like shopping

    7、总结

    看待任何事物都需要用辩证的观点去看,任何事物都有两面性,简单工厂模式也是如此。有优点也有缺点。
        
    优点:用户只需要传入具体产品,就可以得到实例化的类,不需要知道具体实现过程,一定程度上节省了理解成本。

    缺点:如果具体产品角色很多的时候,定义简单工厂就会比较麻烦。不利于扩展,具体产品比较复杂时也许缺点就大于优点了,还是需要理性选择。

    欢迎关注【无量测试之道】公众号,回复【领取资源】

    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    Js整理备忘(06)——函数基础(二) 作用域与闭包
    asp.net——网站发布后xml文件拒绝写入操作
    使用xsd.exe命令 根据指定的xml文件生成对应的xsd架构文件
    Sql Server 导入
    EF 的“根据 Edmx 架构生成数据库”和“根据数据库生成 Edmx 架构”真是强大啊
    生成需要注意的。
    CSS之Position详解
    CSS3阴影
    css ::selection改变文字选择的背景颜色
    reset
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14349581.html
Copyright © 2011-2022 走看看