單一職責原則筆記

lizhibin007發表於2020-11-13

在這裡插入圖片描述
以下以類說明單一職責原則(介面,方法同理)
單一職責原則,通俗來說,一個類只負責一項任務。
以前我們用一個類來說明鳥飛行的方式時,先判斷鳥的型別,然後輸出方法。例如以下程式碼:
Bird類

public class Bird {
    public void mainMoveMode(String birdName){
        if("鴕鳥".equals(birdName)){
            System.out.println(birdName+"用腳走");
        }else{
            System.out.println(birdName+"用翅膀飛");
        }
    }
}

Test主類

public class Test {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.mainMoveMode("大雁");
        bird.mainMoveMode("鴕鳥");

    }
}

當鳥類的種類少時,可能程式不太緊要。但隨著鳥類的種類數目越來越多時,邊界判斷就越來越大,變更時的風險就越大。
現在將Bird類拆分,分為WalkBird 和FlyBird兩類.
WalkBird類

public class WalkBird {
    public void mainMoveMode(String birdName){
        System.out.println(birdName+"用腳走");
    }
}

FlyBird類

public class FlyBird {
    public void mainMoveMode(String birdName){
        System.out.println(birdName+"用翅膀飛");
    }
}

Test主類

public class Test {
    public static void main(String[] args) {
//        Bird bird = new Bird();
//        bird.mainMoveMode("大雁");
//        bird.mainMoveMode("鴕鳥");

        FlyBird flyBird = new FlyBird();
        flyBird.mainMoveMode("大雁");

        WalkBird walkBird = new WalkBird();
        walkBird.mainMoveMode("鴕鳥");

    }
}

結構圖:
在這裡插入圖片描述

相關文章