Просто чтобы добавить здесь прекрасные ответы, фиктивные объекты используются в структурном программировании сверху вниз или снизу вверх (также ООП). Они предназначены для предоставления данных модулям верхнего уровня (графический интерфейс, логическая обработка) или для работы как фиктивный вывод.
Рассмотрим нисходящий подход: сначала вы разрабатываете GUI, но в GUI должны быть данные. Таким образом, вы создаете фиктивную базу данных, которая просто возвращает std :: vector <> данных. Вы определили «контракт» отношений. Кому интересно, что происходит внутри объекта базы данных - до тех пор, пока мой список GUI получит std :: vector <> Я счастлив. Это может предоставить ложную информацию для входа пользователя, что бы вам ни понадобилось для работы графического интерфейса.
Рассмотрим восходящий подход. Вы написали парсер, который читает в текстовых файлах с разделителями. Как узнать, работает ли он? Вы пишете фиктивный «приемник данных» для этих объектов и направляете туда данные, чтобы проверить (хотя обычно), что данные прочитаны правильно. Для модуля на следующем уровне может потребоваться 2 источника данных, но вы написали только один.
И при определении фиктивных объектов вы также должны определить договор о том, как связаны отношения. Это часто используется в программировании на основе тестов. Вы пишете тестовые случаи, используете фиктивные объекты, чтобы заставить его работать, и часто интерфейс фиктивного объекта становится конечным интерфейсом (поэтому в какой-то момент вы можете захотеть разделить интерфейс фиктивного объекта на чистый абстрактный класс) .
Надеюсь, это поможет