《Java與模式》這本書對于我的影響很大,我總結(jié)了書中的幾條編程原則,總結(jié)得不全面,請大家補(bǔ)充。
1“開-閉”原則:一個軟件實體應(yīng)該對擴(kuò)展開放,對修改關(guān)閉,這個原則說的是,在設(shè)計一個模塊的時候,應(yīng)當(dāng)使這個模塊可以在不被修改的前提下被擴(kuò)展,換言之,應(yīng)當(dāng)可以在不被修改源代碼的情況下改變這個模塊的行為。
2對可變性的封裝原則:找到一個系統(tǒng)的可變因素,將它封裝起來。
3將一個進(jìn)行多次條件轉(zhuǎn)移的商業(yè)邏輯封裝到不同的具體子類中,從而使用多態(tài)性來代替條件轉(zhuǎn)移語句。
4由于抽象類不可以實例化,因此一個設(shè)計師設(shè)計一個新的抽象類,一定是用來繼承的,而這一聲明倒過來也是對的:具體子類不是用來繼承的。
5在一個從抽象類到多個具體類的繼承關(guān)系中,共用的代碼應(yīng)當(dāng)盡量移動到抽象類里。
6與代碼的移動方向相反,數(shù)據(jù)的移動方向是從抽象類到具體類。
7一般而言,如果兩個具體類A和B有繼承關(guān)系,那么一個最簡單的修改方法應(yīng)當(dāng)是建立一個抽象類C,然后讓類A和類B成為抽象類C的子類。
8要針對接口編程,不要針對實現(xiàn)編程,要保證做到這一點,一個具體Java類應(yīng)當(dāng)只實現(xiàn)Java接口和抽象Java類中而不應(yīng)當(dāng)給出多余的方法。
9只要一個被引用的對象存在抽象類型,就應(yīng)當(dāng)在任何引用此對象的地方使用抽象類型,包括參量的類型聲明、方法返回類型的聲明、屬性變量的類型聲明等。
10優(yōu)先考慮將一個類設(shè)置為不變類,即使一個類必須是可變類,在給它的屬性設(shè)置賦值方法的時候,也要保持吝嗇的態(tài)度。
11盡量降低成員的訪問權(quán)限。
12如果一個類可以設(shè)置成package-private的,那么就不應(yīng)當(dāng)將它設(shè)置為public。
13在需要一個變量的時候才聲明它,可以有效地限制局部變量的有效范圍。
14一般而言,for循環(huán)比while循環(huán)稍好一點。
15要針對抽象編程,不要針對具體編程。