如何解决使用抽象工厂在虚拟机中创建对象
我为基于原型的编程语言实现了对象系统。 https://github.com/ObjectBerry/ORE/tree/master/source/Objects
每个对象都有自己的工厂方法,用于构造对象(运算符 new 和构造函数是私有的/受保护的)。
现在,完成后,我发现了一件事。
每个工厂方法都需要将对象映射作为参数注入 - 这有利于测试。
但是在 release 中,每种类型的对象将共享一个地图(所有符号将具有相同的地图等)。
我想通过充当抽象工厂的类来解决这个问题 - 对象将具有在系统中创建每个对象的方法。唯一不同的是,这个工厂也有共享映射的属性,每次我们使用这个抽象工厂创建新对象时,它都会把这个映射添加到对象中。
像这样:
class ObjectFactory {
Object_Layout::ObjectMap* _byteArrayMap;
Object_Layout::ObjectMap* _objectArrayMap;
/* other maps */
public:
// we will include allocator that will be used for map allocation
ObjectFactory(Memory::MemoryAllocator* allocator);
Objects::ByteArray newByteArray(Memory::MemoryAllocator* allocator,unsigned short length);
Objects::ObjectArray newObjectArray(Memory::MemoryAllocator* allocator,unsigned short length);
/* other methods */
}
这个工厂会在初始化的时候被创建,并且会被传递给构造函数或者方法。
我的问题是 - 这是一个好的设计还是有更好的方法来做到这一点?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。