菜鳥編三維地質建模系統-設計模式(2)

來源:互聯網
上載者:User

上篇我們談到了將對象的內部操作行為封裝起來,而將對象與外界的通訊操作通過設定一個神經中樞來對其進行控制,既然用到了仿生學的原理,我們就要對人體的生理心理行為進行更進一步的分析:大腦並不是面面俱到,事必躬親的,比如植物神經系統(自主神經系統),主要支配內髒、血管和腺體的行為,大腦根本無法直接去控制,還有脊髓的反射功能,快要滑倒時的身體姿勢狀態校正、手被燙時的自動縮回都是脊髓自動反射的,如果等到大腦思考一下再反應的話,黃花菜都涼了。大腦也是一個非常複雜的對象,分左右兩個半球,每一半球上分別有運動區、體覺區、視覺區、聽覺區、聯合區等神經中樞,由此可見,大腦兩半球是對稱的,兩半球的聯合區,分別發揮左右半球相關各區的聯合功能。說了這麼多,對我們理解設計模式有什麼協助呢?雖然我們人體比世界上最精密的電腦還要複雜千萬倍,但是系統論的思想是一致的,現代工業的大型軟體同樣面臨著眾多複雜的對象、複雜的邏輯關係、複雜的實現演算法等問題,參考一下萬物之靈的人體的運作方式至少可以得到以下的啟發:

1 封裝與抽象:人類自我感知的與互相交流的都是抽象層級的東西(身、心、靈),人們從來不互相談論自己身體內某個細胞一天的旅程,那麼對於一個複雜的系統來說,只要將抽象層次的使用者的需求展現出來就可以了,至於內部的具體實現不應該暴露出來,達到多層封裝,多層抽象的目的。

2 分工與協作:人體內的各個器官合作得真是太愉快了,眼睛不能聽,耳朵不能看,各個器官各司其責,共同來完成一些很複雜的行為。像“微風吹過,送來縷縷清香,彷彿遠處高樓上渺茫的歌聲似的。”這隻不過是朱自清用到的修辭手法-通感。那麼對於一個複雜的系統來說,每個對象都應該只去做一件單一的事情,通過對象的組合來實現更強大的功能。

3 全息繼承與動態響應:人體內的每個細胞內的基因都具有全息性,但是很有趣的是每個細胞都知道自己該幹什麼不該幹什麼,非常守本分,真是“美其食,任其服,樂其俗,高下不相慕”啊!那麼對於一個複雜的系統來說,一個基本的介面基礎類庫是必須準備好的,一個行業相關的類庫是必須準備好的(科學計算函數庫、計算幾何函數庫、通訊類庫、協議封裝庫),在編程中我們也只能做到這些了,總不能想著編一套複雜的程式讓它自己去進行需求分析、系統分析、編碼和測試吧!呵呵。

好,現在回到正題,對象的繼承、組合、建立、刪除這些會怎樣影響設計模式呢!我們大家都常看到、聽到說“優先使用組合而不是繼承”、“面向介面來編程”、“使用COM組件技術”、“.net”等等,技術的更新真是日新月異,但萬變不離其宗,技術的更新都是為了更好的滿足或引領廣大客戶和程式員日益增長或被增長的程式和編程需求,程式設計語言太低級了以後,比如彙編之類的,編程的效率就會很低,程式設計語言太進階了以後,由於抽象層次太高就會使人浮於表面,對特殊問題很難自主解決,微軟的目標就是要讓大部分的程式員在多層抽象之上編程,底層內部的事情由他們的天才團隊處理就好了,這樣人們就會越來越離不開微軟的平台,GOOD OR NOT GOOD,這是個問題!如果代碼都是開源的話,抽次層次高點是很好的事情,這樣可以盡情的享受編程的樂趣!如果是個黑箱的話,編起來總感覺知其然而不知其所以然,會覺得自己越來越傻了!

對象在建立時會遇到哪些問題呢?當對象很多的時候,對象的建立就很麻煩,建立什麼對象?對象的名字是什嗎?不太方便,如果將一些類似對象的建立過程封裝在一起可以方便一些。對象的刪除同樣如此,未及時釋放空間會導致記憶體佔用越來越多,到最後就無記憶體可用了。

對象在繼承時會遇到哪些問題呢? 父類可以多態性指向不同的子類,但是子類和父類別結合程度緊密,子類改變不了父類,也無法選擇其他的父類,這在某些場合就顯得不靈活。

對象在組合時會遇到哪些問題呢?對象組合在一起時,對象之間的耦合性達到了松的目的,但是在建立整體的對象時,需要建立所有局部類的對象。

實踐出真知!設計模式的東西以後再慢慢體會吧,現在先為了三維地質建模系統選擇一套函數庫或者自己編寫一套,下篇就寫怎樣組建相關的庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.