单一责任原则:我应该在Reader,Writer和Container类中分离我的参考书目类吗?

时间:2009-07-01 11:36:56

标签: solid-principles single-responsibility-principle design-principles

牛仔编码员需要SO退伍军人的帮助:

我有一个给定的应用程序使用从文件中读取的参考书目(实际上,它可以是不同的文件,但我们只假设一个文件)。

我构建了一个新的应用程序,它应该以与应用程序相同的方式使用参考书目,因此我复制了相应的类。

几天之后我运行了% - | ...

问题如下:

在参考书目课中,有代码可以阅读,编写和保存参考书目。当有一个类来阅读参考书目和一个保留所有值的容器类时,我的工作会容易得多。我不想编写或编辑参考书目,只需阅读并保留值。

所以我认为最好将参考书目分类为BibliographyReader,BibliographyWriter和Bibliography(Container)课程?

P.S。:有人可以创建一个标签“牛仔编码器”,“牛仔编码”或类似的东西?我真的很想念这个标签;)

2 个答案:

答案 0 :(得分:4)

我喜欢将“容器”类与读取器/写入器/读取器等分离的方法,最好由接口定义。搜索“策略模式”,您将找到更多相关信息。

一个简单的方法是让Bibliography类在其构造函数中接受IBibliographyReader,然后让一个类实现该接口。在创建Bibliography类时,您将具体读者实现的实例传递给它。

答案 1 :(得分:0)

我会按照以下方式分担责任: -

  • 参考书目:保存与参考书目相关的数据。它会在它的构造函数中或通过setter
  • 接收这些数据
  • BibliographyFileStreamReader:负责阅读参考书目(给定文件流)。它返回一个Bibliography实例

您也可以添加BibliographyFileStreamWritter。