本文閱讀nacos-2.0.2的config源碼,編寫示例,分析推送配置、監聽配置的原理。 # 客戶端 ## 創建NacosConfigService對象 ```java Properties properties = new Properties(); properties.setProperty ...
設計模式的目的
編寫軟體過程中,程式員面臨著來自,耦合性,內聚性以及可維護性,擴展性,重用性等方面的挑戰。設計模式是為了讓程式,具有更好的
- 1.代碼重用性(相同代碼,不用重覆編寫)
- 2.可讀性(編程規範性,便於其他程式員的閱讀和理解)
- 3.可擴展性(當需要增加新的功能時,非常的方便)
- 4.可靠性(當我們增加新的功能後,對原有的功能沒有影響)
- 5.使程式呈現高內聚,低耦合的特性
設計模式(design pattern)包含了面向對象的精髓,"懂了設計模式,你就懂了面向對象分析和設計的精要"。學習設計模式,更多的是學是一種設計和分析的思想。
七大原則
設計模式的原則,其實就是程式員在編程時,應當遵守的原則,也是各種設計模式的基礎(即設計模式設計的依據)。
設計模式常用的七大原則有:單一職責原則,介面隔離原則,依賴倒轉原則,里氏替換原則,開閉原則,迪米特法則,合成復用原則。
單一職責原則
介紹
對類來說,即一個類,應該只負責一項職責,如果類A負責兩個不同的職責,職責1和職責2。當職責1發生改變的時候,就可能會影響到職責2,所以,可以將類A分成A1,A2兩個類。
案例1
/**
* 這些案例,只是為了講解具體的原則和設計模式設計的,不要在意其實用性
* @author 長名06
* 單一職責原則 案例1
* 案例1 問題分析
* 存在一個類,負責多項職責,即可能有公路上跑火車的情況出現
*/
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
* 單一職責原則 案例2
* 分析,此案例確實完美依照了單一職責原則,但是導致的問題是
* 需要額外創建三個類,消耗大
*/
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
* 單一職責原則 案例3
* 分析 此案例實現,雖一定程度上違反了單一職責原則,但是
* 相比於案例2 減少了 類的創建,也就是說在類的方法級別上
* 遵守了單一職責原則
*/
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 + "在水上運行");
}
}
分析和總結
- 1.降低類的複雜度,一個類只負責維持一項職責;
- 2.提高類的可讀性,可維護性;
- 3.降低類變更可能會引起的風險;
- 4.通常情況下,我們應當遵守單一職責原則,只有邏輯非常簡單,才可以在代碼級別違反單一職責原則;只有方法很少,才能在方法上保持單一原則。
只是為了記錄,自己的學習歷程,且本人水平有限,不對之處,請指正。