我目前有一个消息系统,它写入两个表sent
和received
,这些表在很大程度上具有相同的模式。
我编写了一个名为Message
的类,它在实例化两个子类之前填充用户输入的数据,这两个子类使用Message
中的常用方法来设置其余属性并将每个属性写入数据库。唯一显着的区别是一个字段,它在子类中用相应的变量表示。所有其他属性都是Message
的一部分。
问题是,Message
除了为创建的对象提供通用方法和属性之外没有其他目的,并且便于访问它所属的数据库类。
这被认为是不好的做法吗? Message
类是单片式还是我应该进一步推动并为了一个字段而包含子类?更好的方法是将类完全分开,有一个用于发送,一个用于接收表吗?
答案 0 :(得分:1)
设计不错。你基本上创建了一个abstract class。这些类不是要实例化的,而是包含在其他几个类中常见的代码。
您遵循了一项原则:DRY - Don't repeat yourself.
当然,如果差异非常小,那么通过将所有内容放在一个类中,您可能会使设计更容易。
答案 1 :(得分:0)
所以你有一个名为Message的类,它设有常用函数和子类(即。)
class SentMessage extends Message {
促进“已发送消息”的特定任务?
这很有道理。这取决于多少功能是分开的。如果唯一的区别是SentMessage和ReceivedMessage被标记为“已发送”或“已接收” - 您最好在Message类中使用getMessageType()函数。但如果它更复杂,那么是的,你走在正确的轨道上。