类设计:创建一个对象只是为了从子类的不良形式创建对象?

时间:2010-06-08 17:46:22

标签: php language-agnostic class-design

我目前有一个消息系统,它写入两个表sentreceived,这些表在很大程度上具有相同的模式。

我编写了一个名为Message的类,它在实例化两个子类之前填充用户输入的数据,这两个子类使用Message中的常用方法来设置其余属性并将每个属性写入数据库。唯一显着的区别是一个字段,它在子类中用相应的变量表示。所有其他属性都是Message的一部分。

问题是,Message除了为创建的对象提供通用方法和属性之外没有其他目的,并且便于访问它所属的数据库类。

这被认为是不好的做法吗? Message类是单片式还是我应该进一步推动并为了一个字段而包含子类?更好的方法是将类完全分开,有一个用于发送,一个用于接收表吗?

2 个答案:

答案 0 :(得分:1)

设计不错。你基本上创建了一个abstract class。这些类不是要实例化的,而是包含在其他几个类中常见的代码。

您遵循了一项原则:DRY - Don't repeat yourself.

当然,如果差异非常小,那么通过将所有内容放在一个类中,您可能会使设计更容易。

答案 1 :(得分:0)

所以你有一个名为Message的类,它设有常用函数和子类(即。)

class SentMessage extends Message {

促进“已发送消息”的特定任务?

这很有道理。这取决于多少功能是分开的。如果唯一的区别是SentMessage和ReceivedMessage被标记为“已发送”或“已接收” - 您最好在Message类中使用getMessageType()函数。但如果它更复杂,那么是的,你走在正确的轨道上。