我希望的基于服务的架构特征:
- 可以在任何地方以方便的方式调用服务. 例如:
from services import service
service.sHelpler.run()
- 服务之间可以互相调用. 比如服务A可以调用服务B的某个功能, 反之亦然.
- 服务支持单例模式和多例模式
- 支持服务的序列化
之前有一篇博文python利用依赖注入实现模块解耦, 可以帮助实现这个架构.
但是稍显复杂, 需要传入字符串形式的模块路径和类名.
替代方案
可以采用比较直接的方式, 把所有的服务对象集中到一个模块中, 如下所示:
from services.a import A
from services.b import B
class Services:
def __init__(self):
self.sA = A()
self.sB = B()
@property
def mA(self)->A:
return A()
@property
def mB(self)->B:
return B()
service = Services()
然后, 在另一个模块中, 按需加载即可, 如下所示:
def service():
from services.services import service
return service
对于用户, 就可以使用这些服务了:
from xxx import service
service().sA.test()
标签:服务,架构,service,python,self,构建,services,import,def
From: https://www.cnblogs.com/huzhongqiang/p/18661808