【发布时间】:2012-08-10 19:53:46
【问题描述】:
我确实有两个班级:读者和作家。对于这两个类,我都有一个抽象接口,因为数据源/目标应该是灵活的:
class abstract_reader {
...
};
class concrete_reader : public abstract_reader {
DATATYPE m_data;
...
};
class abstract_writer {
...
};
class concrete_writer : public abstract_writer {
DATATYPE m_data;
...
};
编写器应具有读取和写入两种功能。 具体写入器的读取部分的实现与具体读取器的实现相同。结合这些类的好方法是什么?
【问题讨论】:
-
我很困惑:你有读者和作家,但作家也是读者(那为什么要有单独的读者?),但实际上两者的实现方式相同?
-
在大多数情况下我只需要一个阅读器,所以有一个阅读器类是有意义的。只有在特殊情况下才需要写作。 m_data 对用户隐藏,但在两种情况下格式相同。在大多数情况下,作者将依赖于数据源中已经存在的数据。如果我有单独的读取器和写入器,我需要将 m_data(这只是一个实现工具)从读取器传递给写入器。流程如下:我读取数据,将部分数据提供给用户,用户创建新数据,用户将新数据提供给编写器,编写器更新数据源。
标签: c++ inheritance abstract-class