【发布时间】:2017-12-10 17:41:18
【问题描述】:
我对一个类必须依赖于其他因素的情况感到困惑。
例如
class Storage:
def __init__(self):
self.logger = Logger()
self.client = Elasticsearch()
def index(document):
try:
self.client.index(document)
except ElasticsearchException as e:
self.logger.error(str(e))
我的班级必须有记录器和Elasticsearch 对象才能执行其操作。在这种情况下,我如何维护 SRP,可能有两种情况需要更改我的类,例如:
- 我切换到不同的数据库
- 我切换到不同的日志库
有人可能会争辩说,我应该让客户端类处理异常,而不是在这里记录。但是在客户端只是yielding要插入的文档并且可以接受索引操作失败的情况下,客户端类不会担心错误。此外,即使我将异常重新抛出到客户端类,那里也会出现同样的 SRP 问题。
我希望能在我的上下文中给出解释性答案。
【问题讨论】:
标签: python oop design-patterns single-responsibility-principle