我在PHP中有一个MVC应用程序。我的'M'包括Domain Objects,Factories和Mappers。可以通过服务层访问模型。
显然,我的Mappers使用Factories从数据库中检索时创建对象。但是,工厂还应该为所有“新”实体创建对象,例如对于新用户?
我认为答案是肯定的,但只是想检查一下。我会使用工厂提供默认值作为他们的任务之一。
作为一个要点:是否有任何术语可以区分“新”实体与从数据库中检索的实体? (我不喜欢使用'new',因为new关键字在所有对象实例之前,甚至是基于从数据库检索的数据的实例。
答案 0 :(得分:1)
是。当然。工厂应该为新实体创建对象。这就是工厂模式的用途。作为一方,考虑使用Fibonacci序列来格式化非数据密集型实体。
答案 1 :(得分:1)
我想到的第一件事是说是,因为这是工厂应该做的事情:创建复杂的对象或隐藏对象创建,但我想提两点要考虑。
这些要点和我要提出的术语来自Eric Evans优秀的书Domain Driven Design。
用于重建的ENTITY FACTORY不会分配新的 跟踪ID。
重建对象的FACTORY将处理违反 不变的。
最后一点强调,如果工厂正在从存储介质中恢复对象,那么它不应该在对象状态(例如损坏的对象)中略有错误,而是从根本上处理它们。
对于术语,我会说使用创建对象来创建新对象,使用存储或重构对象来保存对象。