設計良好的模組,應該是層次化的。
例如,模組b擴充套件了模組a,同時被模組c擴充套件。這樣就形成了a、b、c三個層次。
[img]
如圖模組的層次
如圖所示,層次之間有如下的關係:
上層定義規則,下層定義細節;(上層、下層也可稱為內層、外層)
上層是抽象的,下層是具體的;
越上層,越穩定(越少改變);越下層,越易變。
依賴倒轉(dependency inversion)。下層(具體)依賴上層(抽象),而不是上層依賴下層。
下層擴充套件上層時,不需要修改到上層的任何**和配置。即符合開閉原則(open-closed principle簡稱ocp – open for extension, closed for modification)。
每一層均可被替換。
層次化的設計,使軟體中的每乙個部分都可被增強或替換。
切分功能。每個元件專心做一件事。
分析哪些會改變,哪些不會改變。不變部分固化在元件中,可能會改變的部分抽象成介面,以便擴充套件。
oracle中層次查詢
oracle層次查詢 connect by 是結構化查詢中用到的,下面就為您介紹oracle層次查詢的基本語法,希望可以讓您對oracle層次查詢有更深的認識。oracle中的select語句可以用start with.connect by prior子句實現遞迴查詢,connect by 是結構化...
pgsql中層次查詢方法
與oracle中的start with connect by.非常相似的功能,查詢後顯示目錄層次結構的方法 當然在sql server 2005之後有with的功能。測試 drop table ifexists t1 create table t1 id integer primary key,na...
學習中層次的觀點給我帶來的好處
剛學c語言的時候,我幾乎寸步難行。我老是困惑於這樣乙個簡 單的事實 計算機是怎麼懂得我寫的 的呢?像a a 2這樣的 人類才能夠理解的公式計算機竟然也能準確地計算出來,難道它可以 思考嗎?帶著這個疑問,我又學了一段時間的c,可是最初的那個疑 問依然存在,並漸漸放大,終於使我放棄了學習c,因為我的大腦...