在我的Android和iOS应用程序中(无论是Java还是Objective-C项目)我都有一个搜索表单,当用户单击按钮查找内容时,会创建类FilterState
的对象并使用该过滤器为服务器API生成URL
,返回带有与此过滤器匹配的对象的JSON
。
我被要求最近创建用户搜索的历史记录。我创建了一个新类SearchHistoryItem
,它具有与FilterState类几乎相同的字段,但也可以保存在数据库中并进行检索。我创建了一个单独的类来保存过滤器历史记录,因为我认为历史项目在现实世界中与过滤器项目不同。
但是现在,我开始对这种OO设计产生怀疑。我想问一下,天气我不应该做任何更改并继续支持几个相同字段的两个类,或者我应该通过将与保存在不同Filter状态的数据库相关的方法转移到后面来重构和删除SearchHistoryItem
类。 FilterState类?
答案 0 :(得分:3)
您的主要关注点似乎是否有办法以OO设计方式共享字段。你是对的,任何类型的代码重复通常都有问题需要维护。
考虑这个问题:将来这两个对象在他们的领域会有分歧吗?如果答案是“可能是的”,那么短期内复制字段可能没问题。如果答案“可能不是”,你应该考虑删除重复。
我看到的两个主要选项是:
如果你想要is-a
关系,那么继承通常是可以的。 SearchHistoryItem
真的是FilterState
吗?它似乎不是。作文可能会更好地为你服务。