2009-09-07 74 views
1

我正在一个Perl的网站,我会使用模板工具包(用于查看),一大堆的DB交互和业务逻辑(模型)的对象,但我想知道:应控制器是OO ?我的MVC控制器应该是面向对象的吗?

为了保持一致性,我觉得他们应该这样做,但是当我不以OO方式与控制器交互时,它也感觉它可能有点多余。控制器被称为更多的是一种难以忘怀的方式。

感谢您的任何想法。

回答

2

是,使控制器面向对象的。你应该将它们作为对象进行交互。您可能希望稍后使用子类扩展或修改它们。很多人通过假设他们只需要一个控制器就会陷入麻烦,所以他们通过不计划未来的灵活性而将自己描绘成一个角落。

+0

我不能完全肯定我同意这种说法。我是YAGNI的忠实粉丝。您可以随时更改。当然,这意味着更新很多调用代码,但这就是我们所做的不是吗?我不确定限制可能的重构工作,或者我们的代码应该是设计目标。 – 2009-09-08 00:05:53

+0

这不是一个功能,所以YAGNI不适用。以这种方式或其他方式完成同样多的工作。你也可以用更灵活的方式来做。但是,如果你认为自己对未来有完美的认识,那就做你喜欢的事。我的经验是,没有人喜欢以前的设计,并且总是试图将某些东西引入其中。 – 2009-09-08 12:01:23

2

在我看来,如果觉得还原剂,你不应该使用它。

如果您在不需要它的项目上使用它,OOP可能比专业人士有更多的缺点。

如果它只是一致性刚落。有很多人(例如)在C++中使用stl,但以程序方式编写代码的其余部分。如果你觉得OOP压倒一切,那么你正在考虑使用混合的方法(在需要的地方使用OOP,其余的过程),只要你的代码不因此而难以阅读。

2

您需要查看Catalyst,这将为您节省很多担心控制器使用何种OO以及如何实施它的问题。这不是完美的,但如果你喜欢的话,这是一条穿过设计荒野的好路径。

+0

感谢您的指针 - 我会仔细研究这一点 – aidan 2009-09-16 12:41:54

相关问题