2009-09-07 72 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

相關問題