如何设计将遵循单一职责原则的HTML解析器?

问题描述 投票:0回答:1

我正在编写一个使用BeautifoulSoup4从HTML提取一些数据的应用程序。更具体地说,这些是某种搜索结果。我认为拥有一个Parser类,存储URL前缀,请求标头等默认值是一个好主意。配置完这些参数后,public方法将返回对象列表,每个对象包含一个结果,或者也许甚至是带有列表以及其他参数的对象。我正在努力将用于构建解析器实现的小部分逻辑与解析器类本身分离开。我想编写许多解析器私有实用程序方法,例如:_is_next_page_available,_are_there_any_results,_is_did_you_mean_available等。但是,这些是编写单元测试的理想选择!而且由于我想将它们设为私有,所以我感觉到我缺少一些东西...

[我的另一个想法是将该解析器作为一个函数编写,并调用许多其他实用程序函数,但这仅相当于将所有这些方法公开,这没有意义,因为它们是实现细节。] >

您能建议我如何正确设计吗?

我正在编写一个使用BeautifoulSoup4从HTML提取一些数据的应用程序。更具体地说,这些是某种搜索结果。我认为拥有一个解析器是一个好主意...

python unit-testing oop solid-principles
1个回答
0
投票

我认为您对单一责任原则(SRP)的解释有些不同。它的实际含义与“一堂课只能做一件事”略有不同。它实际上指出,一个类应该只有一个并且只有一个改变的理由。

© www.soinside.com 2019 - 2024. All rights reserved.