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