温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Python中使用抽象工厂模式

发布时间:2021-04-02 16:30:06 来源:亿速云 阅读:188 作者:Leah 栏目:开发技术

如何在Python中使用抽象工厂模式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类

下面是一个抽象工厂的demo:

#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话设计模式 设计模式——抽象工厂模式 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 """ import sys #抽象用户表类 class User(object):   def get_user(self):     pass   def insert_user(self):     pass #抽象部门表类 class Department(object):   def get_department(self):     pass   def insert_department(self):     pass #操作具体User数据库类-Mysql class MysqlUser(User):   def get_user(self):     print 'MysqlUser get User'   def insert_user(self):     print 'MysqlUser insert User' #操作具体Department数据库类-Mysql class MysqlDepartment(Department):   def get_department(self):     print 'MysqlDepartment get department'   def insert_department(self):     print 'MysqlDepartment insert department' #操作具体User数据库-Orcal class OrcaleUser(User):   def get_user(self):     print 'OrcalUser get User'   def insert_user(self):     print 'OrcalUser insert User' #操作具体Department数据库类-Orcal class OrcaleDepartment(Department):   def get_department(self):     print 'OrcalDepartment get department'   def insert_department(self):     print 'OrcalDepartment insert department' #抽象工厂类 class AbstractFactory(object):   def create_user(self):     pass   def create_department(self):     pass class MysqlFactory(AbstractFactory):   def create_user(self):     return MysqlUser()   def create_department(self):     return MysqlDepartment() class OrcaleFactory(AbstractFactory):   def create_user(self):     return OrcaleUser()   def create_department(self):     return OrcaleDepartment() if __name__ == "__main__":   db = sys.argv[1]   myfactory = ''   if db == 'Mysql':     myfactory = MysqlFactory()   elif db == 'Orcal':     myfactory = OrcaleFactory()   else:     print "不支持的数据库类型"     exit(0)   user = myfactory.create_user()   department = myfactory.create_department()   user.insert_user()   user.get_user()   department.insert_department()   department.get_department()

上面类的设计如下图:

如何在Python中使用抽象工厂模式

优点:

具体工厂类如MysqlFactory在一个应用中只需要初始化一次,这样改动一个具体工厂变得很容易,只需要改变具体工厂就可以改变整个产品的配置。

具体的创建实例过程与客户端分离,客户端通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户端代码中

缺点:在新增一个具体工厂就需要增加多个类才能实现

关于如何在Python中使用抽象工厂模式问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI