仓储与工厂的疑问

11-10-28 liuchengr
工厂是负责在内存中创建对象。

仓储是类似一个集合,负责对象的保存、删除、获取。

前提:

系统中的数据不需要持久化,全部在内存中。

我的疑问是:

1、通过工厂创建的对象实例,是否已经在系统里了?

存在:调用仓储的查询是否能获得刚才创建的对象实例?

不存在:那么将对象实例注册到系统里的入口在哪里?仓储里的保存?

2、在对象注册到系统里时,肯定有部分规则约束,那么这个规则约束放在哪里?例如:用户注册时,帐户是不允许重复的。 网上订票时,某一时刻班次的订单数是不能大于座位数的。

    

1
banq
2011-10-28 16:11
2011年10月28日 12:16 "@liuchengr"的内容
通过工厂创建的对象实例,是否已经在系统里了 ...

你这个系统是指内存吗? 工厂是负责创建对象到内存中,仓储负责内存中的对象和持久化数据进行转换的,把立体式的对象格式转为扁平的关系数据表格式保存起来。

liuchengr
2011-10-28 17:26
2011年10月28日 16:11 "@banq"的内容
你这个系统是指内存吗? 工厂是负责创建对象到内存中,仓储负责内存中的对象和持久化数据进行转换的,把立体式的对象格式转为扁平的关系数据表格式保存起来。 ...

但是,例如 通过工厂产生一个订单实例,那么系统里肯定是查询不到这个订单的,因为工厂只是负责创建而已,创建后,必须要有一个注册(添加)的步骤,将这个订单实例加入到系统中,这样才能被其他用户查询到。

工厂并不负责将创建的实例注册到系统里。那由谁来执行注册步骤呢?

例如客户端代码:

Order = OrderFactory.Create(...)

执行完这句,其他用户就能看见我创建的订单了吗?

banq
2011-10-29 09:27
2011年10月28日 17:26 "@liuchengr"的内容
Order = OrderFactory.Create(...)

执行完这句,其他用户就能看见我创建的订单了吗 ...

两种方式,将order对象传到界面显示就可以了,还有一种是将order注册到缓存In-memory系统,以后界面或任何地方需要这个order对象,只要根据其实体主键ID到系统获得即可。

猜你喜欢