今天見一同事參加答辯,問起了乙個這樣的問題:在軟體開發中,結合自己的例項說說如何使軟體做到
ocp原則。
事實上這是乙個非常難回答的問題,不過也是乙個可以回答的問題。
什麼是ocp
?乙個軟體實體應當對擴充套件開放,對修改關閉。這個原則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。
如何做到
ocp?
第一:類的設計高度抽象化。這個抽象層預見了所有的可能擴充套件,因此,在任何擴充套件情況下都不會改變,這就使得系統
的抽象層不需要修改,從而滿足「開
-閉」原則的對修改關閉。這種使用,其實在開發我們用的已經非常常見了。如,針對
介面程式設計。無論是
dao層,還是
service
層,我們都是針對介面來實現的,當然針對介面程式設計不僅僅是指,類的定義為介面
,我們在定變數,或引數傳遞時,也是應先考慮介面來傳遞。
第二:對可變化的進行封裝。
這個「可變性的封裝原則」講的是找到乙個系統的可變因素,將之封裝起來。在設計
時,考慮設計中什麼可能會發變化。這個意思是說,你在做設計時,考慮的是你允許什麼發生變化而不讓這一變化導致重設計。所以要做到「可變華進行封裝」原則,
首先:一種可變性不應當散落在**的很多角落裡,而應當封裝到乙個物件裡面。同一種可變性的不同
表現,則可以用繼承來實現。所以,我們在開發中經常會用到繼承。繼承是一種
實現封裝變化的方法。所以,我們可以看到,在設計中,為何總是提出優先考慮使用組合,而非繼承。不應當繼承
認為是從一般物件生成特殊的物件的方法。
其次:一種可變性不應當與另一種可變性混合在一起。所以,我們會發現在類的結構設計的時候,類的層次結構不會超過兩層。
不然意味著將兩種不同的可變性混合在一起了。
來看下操作票系統中的應用。我們的裝置停送電的主過程基本上是不變的,就是從檢修-冷備
-熱備-執行這麼乙個過程
,但是每類裝置的栓修-
冷備,冷備
-到熱備,熱備到執行這個過程中所產生的操作步驟是完全不同的。所以這塊是變化的,好我們先將這塊變化東西封裝起來,這樣,在我們的程式中,就對每類裝置有了乙個實現開票具體步驟的類(
ibusslogic
),我們將抽象出來的開票的主過程也設計成乙個類(
abticketservice)
答辯結束有感
忙活了幾個月,研究生 的寫作 答辯終於在昨天結束了,說一下感受 千萬別把答辯當講課,我們的目的不是在短短的十幾分鐘之內讓各位老師都搞明白我們做的是什麼,而是要讓他們搞不明白!前人研究了好多年的演算法,你自以為聰明的用最淺顯的語言,最簡單的例子講清楚了,台下各位專家一聽,艹,這麼簡單!然後為了讓各位專...
師兄博士答辯有感
下午去聽了我們組博士的答辯。第乙個挺的是fw的。看了他的ppt 發現自己碩士的ppt 寫的很爛。基本上大家一般都有四篇以上的文章,然後每個文章是乙個主題,當然也不排除在乙個主題下面有多篇文章。他對原有的方法基本上做了乙個總結,比如現有的什麼方法。每個方法有什麼優點。什麼缺點 用紅色的字型標出來 然後...
畢業答辯 畢業設計答辯現場技巧
1 拿上必備材料 1 紙質版 自己手上必須有乙份,可以不加封面,但是頁碼一定要與送交答辯秘書的 一致,方便老師提問時自己查詢相應頁面 2 紙和筆 有些老師提問較多,或者每個老師分別提問,學生最後一起回答,有紙幣方便在老師提問時記下題目,或者在準備回答時簡單做思路筆記。2 注意演講技巧 1 控制語速 ...