關於軟體設計的一點心得體會

2021-06-25 23:02:20 字數 1566 閱讀 7625

曾經看過一本書叫《道法自然》,內容略記得一二,但我最欣賞的是它的書名。軟體設計沒什麼太神秘有東西,只要用心體會,其實一切都很自然。軟體的設計之「

道」,也不在於設計有多麼的華麗、精巧,而在於其樸實、自然,最終達到「以無招勝有招」,進入乙個全新的境界。

一、軟體設計理論的層次

以我的拙見,軟體設計領域中的各種概念,可以分為以下幾個層次來進行理解:

1、軟體設計的目的:重用性、擴充套件性。

這是最高的層次,是應對軟體危機的需要。

2、設計原則:低耦合、高聚合。

各種軟體設計的原則,如依賴倒置原則、單一職則原則、面向介面等,以及各種設計模式,其根本的目的其實只是為了降低耦合這麼簡單。因為只有低耦合才能更好

的適應變化,更好的重用和擴充套件。

3、實現方法:運用設計模式封裝變化、降低耦合。

設計模式只是用來「封裝變化、降低耦合」的工具而已。它是物件導向設計時代的產物,其本質就是充分運用物件導向的三個特性,即:封裝、繼承和多型,進行靈

活的組合運用。

二、關於耦合

1、耦合的粒度

耦合無論如何也是不可避免的。當我們實現介面、繼承父類的時候,就會不可避免的產生耦合。耦合是有不同粒度的,我們解耦到什麼粒度為止,我認為應以模組的

重用粒度為準。盡量解除重用模組或物件之間的耦合。而重用模組之內的耦合,應屬於聚合的範疇,所以不要盲目的去解耦,否則就陷入了誤區。

2、解耦的原理

怎樣才能解耦呢,或者說為什麼各種設計模式能達到解耦的目的呢?我覺得有以下幾個思路:

(1)將具體的東西抽象處理

(2)將分散的東西集中處理

而物件導向中的介面、繼承正為我們提供了這樣的一種機制。通過訪問介面或基類或抽象類,而不是具體的實現類,從而與具體的實現類達到了解耦的目的。我們還

可以設計一些控制類,像潤滑劑一樣,協調各實現類之間的訪問,也可以達到耦的目的。

事實上,各種設計模式的基本思想也就是這樣。建立型模式是為了解除建立物件時產生的耦合,實際上是解除對類稱名的依賴,而結構型和行為型是為了解除物件屬

性或方法的直接呼叫。不管什麼設計模式,都是將對具體實現類的訪問提公升為對介面、基類或用於協調的控制類的訪問。

三、關於介面

這一節更具體,談一談介面,因為使用介面是軟體設計的重要手段,但已經不屬於「道」了~

1、介面與繼承

介面描述的是物件某乙個方面行為特徵。使用介面與使用繼承關係各有優缺點,使用子類繼承可以繼承父類的功能,體現了重用的精神。而接品更加靈活,因為它解

除了子類與父類之間的高度耦合,它體現在靈活擴充套件的精神。

2、介面與純虛類

理論上介面可以由純虛基類實現類似的功能,那為什麼還我們不去掉介面的概念,而直接使用虛類呢?

介面存在的理由就是它更加靈活,關係簡單,易於理解。比如乙個類可以實現十幾個甚至幾十個介面,但一般開發工具只支援單繼承(由於多繼承太容易導致混亂和

衝突),如果要繼承十幾層,系統結構想必會無法理解了,我以為這是介面存在的最重要的原因。

如果介面和虛類繼承結合使用,可以產生強大的威力,這也是許多設計模式的「殺手鐗」。

以上算是總結一下自己的心得。肯定有不少片面之處,請各位指教。

一點心得體會

回顧自己從出生到現在的20多年,往事一幕幕 生命中各個重要的事件 真的是應了那一句話,有時候悲劇的注定,多半是由性格所致。諸多人情世故,有時候,父母教育是乙個方面,但父母的閱歷也有限,此時,書籍 其他長輩 甚至平輩的引導,都是有益的 秋水 致我日夜思念 深深愛 著 過的人 以後補充 人記不住太遠的事...

一點心得體會

畢業5年了,等於又讀完乙個大學了,但是因為甚少記錄和歸納學到的東西,看不清自己的成長,心裡十分惶恐。現將自己還記得清楚的成長記錄下來,希望不要丟掉。這是得益於我的測試工作。清晰的界限首先會讓你從全域性去考慮問題,讓你不會一開始掉入細節,也讓你在細節的學習中,永遠做到心中有數。學會合理調動資源 站在巨...

架構的一點心得體會

今天看了唐巧寫的文章,我覺得我也應該學習大神,嘗試著將自己的學到的知識,以技術部落格的形式展現出來,供大家借鑑學習!以前總是想想過後再寫,第一篇文章就在今天萌芽了!今天就談談看了別人寫的程式架構的設計之後的感想!之前做過乙個 ios教育的專案,專案結構是我搭的,第一次搭,我就按照專案的功能,以及公共...