2009-12-06 59 views
2

當建設應用程序,最好的方式來決定什麼去哪裏。你怎麼知道什麼功能放在什麼控制器和模型。例如,我正在構建一個基於位置的應用程序。用戶可以發佈不同的內容,然後在一定距離內向其他用戶展示。此外,每個用戶都將擁有自己的配置文件頁面,該頁面將顯示該用戶發佈的所有內容,而不管位置。最好的方式來組織應用程序?....(MVC設計模式)

所以我有模特這樣

class UserModel extends BaseM{ 
    get_user($uid); 
    get_all_users(); 
    edit_user($new_data); 
    delete_user($uid); 
    add_user($new_user); 
    get_user_articles($uid); 
    get_user_reviews($uid); 
    get_user_foo($uid); 
} 

class ArticleModel extends BaseM{ 
    get_article($aid); 
    get_all_articles(); 
    add_article($new_article); 
    delete_article($aid); 
}// similar to ReviewModel, and other models 

class LocalModel extends BaseM{ 
    get_local_articles($zip_code, $range); 
    get_local_reviews($zip_code, $range); 
    get_local_foo($zip_code, $range); 
}// holds all location related functions 

正如你所看到的,我集中在的usermodel一切都處理一個用戶(需要用戶ID),一切都處理位置(需要郵遞區號)在localModel,然後一切都有自己的模型。

我想知道什麼是最好的方法來弄清楚什麼去了哪裏,有沒有像這種東西的經驗法則?

+0

這取決於你使用的是什麼框架(如果有的話)。大多數框架的MVC解釋和實現都不相同。 – 2009-12-06 23:52:23

回答

1

那麼你已經有80%了。你已經把你的模型打破了,這是一場大戰。接下來設計你想要的應用程序。如果最終在多個頁面上出現大量重複的「元素」,那麼每個元素都應該是一個視圖。否則,每個頁面應該是一個視圖。或者兩者的一些組合。

一旦你定義了頁面,並且你知道應用程序的數據流,所有剩下的就是控制器。

在一個小應用中使用單個控制器可能很實用。或者對於非常複雜的應用程序,您可能有多個控制器 - 但每個「頁面」不超過一個。

請記住 - 模型應該與視圖無關(您可以在不影響模型的情況下重新制作UI)。這些觀點應該是盲目的,從數據的來源或去向 - 所有事情都通過控制器進行過濾。

見我以前回答過類似的問題here

0

我通常使用這種方法:試着把它放在某個地方。如果過了一段時間你使用它,感覺很尷尬,那麼它不在正確的地方。

一般來說,每個模型類都應該有自己有意義的方法,並最終返回其他模型。避免將過多的計算智能放入模型中。如果在兩個班中都有某種感覺奇怪的話,那麼可能會有第三個班被發現。

+0

你是什麼意思「最終返回其他模型」? – BDuelz 2009-12-08 04:40:50

+0

如果您有一個表示Car對象的模型類,則有一個方法getEngine()來獲取引擎的模型對象。 – 2009-12-08 04:53:01

相關問題