如果你的類增長如此之大,你想怎麼砍他們到不同的源文件,你可能有一個設計問題。
的模型 - 視圖 - 控制器(更好,模型的控制器視圖)設計模式幾乎自動創建小模塊化的代碼。
該模型處理與數據相關的所有內容。該視圖管理實際的視覺用戶界面,控制器將兩者粘合在一起。每個模塊都是一個獨立的類,理想情況下,模型和視圖應該非常獨立,以便可以輕鬆插入其他應用。
關鍵是在分離功能上是完全無情的。將數據保存在控制器中總是很有吸引力。當你只是用很少的數據學習和編寫小程序時,情況尤其如此。但是,隨着數據複雜性的增長,您的控制器很快就會變得複雜起來。
所有優秀的設計都是從數據模型開始的。該模型應該處理數據中的所有邏輯關係,即創建,修改,驗證,保存等。設計正確的數據模型對於用戶界面來說是完全不可知的。理想情況下,數據模型應該可以與標準視圖,Web視圖,命令行一起工作或者拋出一個URL。
我總是通過在絕對最小接口的測試應用程序中創建數據模型來啓動項目。 (通常它只是一個啓動的空白應用程序,以編程方式操作數據模型,打印到控制檯並退出。)只有當數據模型獨立工作時,纔會轉向程序的其餘部分。
現在,我瞭解數據和數據操作,我可以爲每個要運行的環境設計一個UI。 UI僅瞭解如何創建UI元素以及如何響應事件。它不包含任何數據,甚至不包含將這些元素相互關聯的邏輯。
控制器將視圖和數據模型粘合在一起。控制器只知道向數據模型發送哪些消息以獲取特定UI元素中響應特定事件的數據。它不驗證數據或對其執行任何邏輯操作。它只是在數據模型和當前視圖之間路由信息。
任何創建其他接口的操作(如打印)都應該有自己的控制器對象。例如,在打印時,只有數據模型能夠理解所有數據如何在頁面上進行拼接。沒有理由爲什麼控制UI視圖的同一個控制器應該控制打印。相反,打印控制器只是要求數據模型打印數據。 UI控制器只需要調用打印控制器並將其指向用戶選擇的數據即可。
在您的具體示例中,計算方法將在數據模型中,打印控制器中的打印方法等。使用模型 - 視圖 - 控制器,最終會生成許多令人驚訝的小模塊類,這些類很容易管理,測試和移植。
非常感謝代碼片段,Costique!學習一些Apple代碼需要花一些時間(並且還要閱讀「類別」),所以我不能馬上嘗試它,但應該設法在週末結束。那麼我會盡快回復你。同時,再次感謝您的幫助:-) – Bender 2010-01-23 11:12:52
不客氣。 – Costique 2010-01-23 13:15:27