leveldb log_reader.h/ Рассмотрение дизайна класса Reader

Я нахожу класс Reader дизайн таким образом. у нас есть имя класса Reader, затем мы предоставляем интерфейс класса Reporter

class Reader {
...
class Reporter {
   public:
    virtual ~Reporter();

    // Some corruption was detected.  "size" is the approximate number
    // of bytes dropped due to the corruption.
    virtual void Corruption(size_t bytes, const Status& status) = 0;
};
};

почему мы должны проектировать этот путь? В своей интуиции я предоставлю чисто виртуальную функцию Corruption в классе Reader?

class Reader {

virtual void Corruption(size_t bytes, const Status& status) = 0;
};

Затем, если я захочу использовать класс Reader, я унаследую от класса Reader и предоставлю свою собственную реализацию Corruption.

Я думаю, что разница здесь заключается в том, что, если мы поступим так, как leveldb db, пользователю нужно только знать, как реализовать интерфейс Reporter. Но в моем наследии от класса Reader пользователю необходимо знать весь класс Reader.

Таким образом, способ leveldb обеспечивает большую инкапсуляцию.

Это правильное соображение в степени Левелдба

0 ответов

Другие вопросы по тегам