天天看點

設計模式(1)--單一職責原則

文章目錄

  • ​​解釋​​
  • ​​代碼示範​​
  • ​​demo1​​
  • ​​demo2​​
  • ​​demo3​​
  • ​​總結​​

解釋

設計模式(1)--單一職責原則

代碼示範

demo1

public class SingleResponsibility {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("機車");
        vehicle.run("汽車");
        vehicle.run("飛機");

    }

}
/**
 * 方式1
 * 這些寫的問題:
 *   在方式1中,違反了單一原則
 *   解決方式:
 *         根據交通工具運作方法不同,分解成不同的類即可。
 */
class Vehicle {
    public void run(String vehicle){
        System.out.println(vehicle + " 在公路上運作...");
    }
}      

demo2

public class SingleResponsibility2 {
    public static void main(String[] args) {
        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("機車");
        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飛機");
        WaterVehicle waterVehicle = new WaterVehicle();
        waterVehicle.run("船");
    }
}

/**
 * 方案2:的分析
 *  //1.遵守單一職責原則
 *  //2.但是這樣的改動很大,即将類分解,同時修改用戶端
 *  //3.直接修改vehicle類,改動的代碼比較少 = > 方案三
 */
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 + "在水上運作");
    }
}      

demo3

public class SingleResponsibility3 {
    public static void main(String[] args) {
        Vehicle2 vehicle2 = new Vehicle2();
        vehicle2.run("汽車");
        vehicle2.runAir("飛機");
        vehicle2.runWater("輪船");
    }
}

/**
 * 方案三:
 *   1.這種修改方法沒有對原來的類做大的修改,隻是增加方法
 *   2. 這裡雖然沒有在類上沒有遵守單一職責原則,但是在方法上,仍然遵守單一職責原則
 */
class Vehicle2 {
    public void run(String vehicle){
        System.out.println(vehicle + " 在公路上運作...");
    }
    public void runAir(String vehicle){
        System.out.println(vehicle + " 在天空運作...");
    }
    public void runWater(String vehicle){
        System.out.println(vehicle + " 在水中運作...");
    }
}      

總結

繼續閱讀