我们有一个 My_list 类,它有一个指向 Abstract_things 的指针列表。为了优化内存使用,所有派生的事物都使用一个以“新建和删除”原型建立的内存池。为了在应用程序初始化期间正确调整池的大小,构建器会确定哪个事物是最大的,并以此为基础调整池的大小。
设计困境是,如果向模型中添加了新事物(用红色的 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