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