?
?
UML
“+”:public “-”private,“#”protected
依賴關(guān)系:用虛線箭頭表示;
關(guān)聯(lián)關(guān)系:用實(shí)心箭頭表示;
繼承關(guān)系:用空心三角形+實(shí)線表示;
實(shí)現(xiàn):用空心三角形+虛線表示;
聚合關(guān)系(Aggregation):表示一種弱的“擁有”關(guān)系。體現(xiàn)的是:A對(duì)象可能包含B對(duì)象,但B對(duì)象不是A對(duì)象的一部分。用空心的菱形+實(shí)
線箭頭表示。
合成關(guān)系(Composition):也叫“組合”關(guān)系。是一種強(qiáng)的“擁有關(guān)系”,體現(xiàn)了嚴(yán)格的整體和部分的關(guān)系,部分和整體的生命周期一樣。
用實(shí)心的菱形+實(shí)線箭頭表示。
軟件設(shè)計(jì)原則
代碼的要求:可維護(hù),可復(fù)用,可擴(kuò)展,靈活性好。
面向?qū)ο蟮娜筇卣鳎悍庋b,繼承和多態(tài)。
單一職責(zé)原則
就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。如果一個(gè)類承擔(dān)的職責(zé)過(guò)多,就等于把這些職責(zé)耦合在一起,一個(gè)職責(zé)的變化,可能會(huì)削弱或者抑制這個(gè)類完成
其它職責(zé)的能力。這種耦合會(huì)導(dǎo)致脆弱的設(shè)計(jì),當(dāng)變化發(fā)生時(shí),設(shè)計(jì)會(huì)遭受意想不到的破壞。
軟件設(shè)計(jì)真正要做的內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把職責(zé)相分離。如果你能想到多于一個(gè)的動(dòng)機(jī)去改變一個(gè)類,那么這個(gè)類就具有多于一個(gè)的職責(zé)。
開(kāi)放、封閉原則
軟件實(shí)體應(yīng)該可以擴(kuò)展,但是不可以修改。
對(duì)于擴(kuò)展是開(kāi)放的,對(duì)于修改是封閉的。
依賴倒轉(zhuǎn)原則
抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。
針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。
里氏代換原則
子類型必須能替換掉它們的父類型。
一個(gè)軟件實(shí)體,如果使用的是一個(gè)父類的話,那么一定適用于其子類,而且它覺(jué)察不出父類對(duì)象和子類對(duì)象的區(qū)別。也就是說(shuō),在軟件里面,把父類都替換成它的
子類,程序形為沒(méi)有變化。
迪米特法則
也叫最少知識(shí)原則。
如果兩個(gè)類不必彼此直接通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用。如果一個(gè)類需要調(diào)用另一個(gè)類的一個(gè)方法,可以通過(guò)第三者轉(zhuǎn)發(fā)這個(gè)調(diào)用。
在類的結(jié)構(gòu)設(shè)計(jì)上,每一個(gè)類都應(yīng)該盡量降低成員的訪問(wèn)權(quán)限。
它強(qiáng)調(diào)了類之間的松散耦合。
?
合成復(fù)用原則
多用聚合與合成,少用繼承關(guān)系。