У нас есть класс My_list, в котором есть список указателей на Abstract_things. Чтобы оптимизировать использование памяти, все производные вещи используют один пул памяти, созданный со стереотипом «new and delete». Чтобы правильно определить размер пула во время инициализации приложения, разработчик выясняет, какая вещь является самой большой, и определяет размер пула на основе этого.
Дилемма дизайна заключается в том, что если в модель добавляется новая вещь (обозначена красным Thing_4), дизайнер должен знать, что нужно перейти к Builder для настройки логики. Я заметил, что нашей команде было достаточно сложно запомнить это (около половины наших вещей не было учтено в Builder). Я очень обеспокоен тем, что будущие поколения не заметят этого.
Мой вопрос, как я могу улучшить это? Было бы замечательно, если бы в процессе создания класса Thing_4 все эти вещи max_size автоматически обрабатывались. Хотя я не могу придумать способ.
Примечание: просматривая мою фотографию, я понимаю, что произошла ошибка. Последняя строка в блоке кода должна выглядеть как Abstract_thing :: set_max_pool_size (max_size, max_number).
Редактировать: я не могу понять, как отобразить картинку. В окне предварительного просмотра все выглядит хорошо, но после публикации его там нет. Любая помощь?
Редактировать: Чтобы дать немного больше фона, это часть дизайна для встроенного приложения в системе, критически важной для безопасности. Нам разрешается выделять память из кучи при инициализации приложения, но после выхода из этой фазы инициализации НИКАКАЯ динамическая память не может быть выделена. Попытка сделать это приводит к сбою приложения. Поэтому мы программируем до самых больших размеров и максимального количества используемых нами экземпляров. Наличие одного пула, который содержит достаточно места для всех производных объектов, является лучшим подходом, чем наличие пула для каждого производного объекта.
альтернативный текст http://img262.imageshack.us/img262/4470/designproblemof1.png