設(shè)計模式的目的
編寫軟件過程中,程序員面臨著來自,耦合性,內(nèi)聚性以及可維護性,擴展性,重用性等方面的挑戰(zhàn)。設(shè)計模式是為了讓程序,具有更好的
- 1.代碼重用性(相同代碼,不用重復(fù)編寫)
- 2.可讀性(編程規(guī)范性,便于其他程序員的閱讀和理解)
- 3.可擴展性(當(dāng)需要增加新的功能時,非常的方便)
- 4.可靠性(當(dāng)我們增加新的功能后,對原有的功能沒有影響)
- 5.使程序呈現(xiàn)高內(nèi)聚,低耦合的特性
設(shè)計模式(design pattern)包含了面向?qū)ο蟮木瑁?懂了設(shè)計模式,你就懂了面向?qū)ο蠓治龊驮O(shè)計的精要"。學(xué)習(xí)設(shè)計模式,更多的是學(xué)是一種設(shè)計和分析的思想。
七大原則
設(shè)計模式的原則,其實就是程序員在編程時,應(yīng)當(dāng)遵守的原則,也是各種設(shè)計模式的基礎(chǔ)(即設(shè)計模式設(shè)計的依據(jù))。
? 設(shè)計模式常用的七大原則有:單一職責(zé)原則,接口隔離原則,依賴倒轉(zhuǎn)原則,里氏替換原則,開閉原則,迪米特法則,合成復(fù)用原則。
單一職責(zé)原則
介紹
對類來說,即一個類,應(yīng)該只負(fù)責(zé)一項職責(zé),如果類A負(fù)責(zé)兩個不同的職責(zé),職責(zé)1和職責(zé)2。當(dāng)職責(zé)1發(fā)生改變的時候,就可能會影響到職責(zé)2,所以,可以將類A分成A1,A2兩個類。文章來源:http://www.zghlxwxcb.cn/news/detail-662504.html
案例1
/**
* 這些案例,只是為了講解具體的原則和設(shè)計模式設(shè)計的,不要在意其實用性
* @author 長名06
* 單一職責(zé)原則 案例1
* 案例1 問題分析
* 存在一個類,負(fù)責(zé)多項職責(zé),即可能有公路上跑火車的情況出現(xiàn)
*/
public class SingResponsibility1 {
public static void main(String[] args) {
Vehicle vehicle = new Vehicle();
vehicle.run("汽車");
vehicle.run("自行車");
vehicle.run("火車");
}
}
class Vehicle{
public void run(String vehicle){
System.out.println(vehicle + "在公路上運行");
}
}
案例2
/**
* @author 長名06
* 單一職責(zé)原則 案例2
* 分析,此案例確實完美依照了單一職責(zé)原則,但是導(dǎo)致的問題是
* 需要額外創(chuàng)建三個類,消耗大
*/
public class SingResponsibility2 {
public static void main(String[] args) {
RoadVehicle vehicle = new RoadVehicle();
vehicle.run("汽車");
AirVehicle airVehicle = new AirVehicle();
airVehicle.run("飛機");
WaterVehicle waterVehicle = new WaterVehicle();
waterVehicle.run("輪船");
}
}
class RoadVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在公路上運行");
}
}
class AirVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在天空中運行");
}
}
class WaterVehicle {
public void run(String vehicle) {
System.out.println(vehicle + "在水中運行");
}
}
/**
* @author 長名06
* 單一職責(zé)原則 案例3
* 分析 此案例實現(xiàn),雖一定程度上違反了單一職責(zé)原則,但是
* 相比于案例2 減少了 類的創(chuàng)建,也就是說在類的方法級別上
* 遵守了單一職責(zé)原則
*/
public class SingResponsibility3 {
public static void main(String[] args) {
Vehicle2 vehicle2 = new Vehicle2();
vehicle2.runInRoad("汽車");
vehicle2.runInAir("飛機");
vehicle2.runInWater("輪船");
}
}
class Vehicle2{
public void runInRoad(String vehicle){
System.out.println(vehicle + "在公路上運行");
}
public void runInAir(String vehicle){
System.out.println(vehicle + "在天空中運行");
}
public void runInWater(String vehicle){
System.out.println(vehicle + "在水上運行");
}
}
分析和總結(jié)
- 1.降低類的復(fù)雜度,一個類只負(fù)責(zé)維持一項職責(zé);
- 2.提高類的可讀性,可維護性;
- 3.降低類變更可能會引起的風(fēng)險;
- 4.通常情況下,我們應(yīng)當(dāng)遵守單一職責(zé)原則,只有邏輯非常簡單,才可以在代碼級別違反單一職責(zé)原則;只有方法很少,才能在方法上保持單一原則。
只是為了記錄,自己的學(xué)習(xí)歷程,且本人水平有限,不對之處,請指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-662504.html
到了這里,關(guān)于設(shè)計模式和七大原則概述及單一職責(zé)原則詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!