我正在使用codeigniter进行项目,我对设计实现的正确方法有几个问题。
我有一个“交易”类,它基本上包含交易的属性,如名称,到期日,交易描述等。
最重要的是,我还有一个“广告系列”课程,用于处理与交易相关的外部内容,但并不真正与之相关。例如,广告系列可以包含页眉和页脚图像,交易将呈现的主题等等。一个活动一次只能有一笔交易,同样的交易也是如此。一旦交易到期,另一笔交易可能会与同一个广告系列挂钩。
“Deals”和“Campaign”的数据来自他们自己独立的模型类(DealsModel和CampaignModel)。
因为我希望控制器只调用一个类来设置广告系列并处理视图,所以我创建了一个名为ViewManager的中间类,它创建了适当的逻辑并按下“Deals”类和“Campaign”中的数据。在它发送给控制器之前,控制器将其交回视图。
现在,我在控制器中有一些需要直接访问模型类的函数。我想知道是否应该将此功能委托给ViewManager类并让它处理它,因为它有一个模型实例,或者我应该在控制器中创建一个新的模型实例并直接调用它。
感觉就像我将更多的函数委托给ViewManager,代码变得越混乱。
答案 0 :(得分:1)
这听起来像是一个糟糕的MVC实现。特别是模型部分。
根据您的描述,Deals
和Campaign
类似乎实际上是Domain Object和数据访问对象的合并。它们是Domain Model应该使用的结构。此域模型应包含其他功能。
整个问题来自CodeIgniter中提供的错误实现MVC。 ActiveRecord不足以替代真实模型。这个错误迫使业务逻辑进入Controller甚至进入View。我责怪RoR。
P.S ..哦..和Managare这样的类名通常被认为是代码气味。