敏捷軟件開發之開放-封閉原則

** OCP:開放-封閉原則:**
軟件實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。

OCP建議我們應該對系統進行重構,這樣以后對系統再進行同樣的改動時,就不會導致更多的修改。如果正確地應用OCP,那么以后再進行同樣的改動時,就只需要添加新的代碼,而不必改動已經正常運行的代碼。

遵循開放-封閉原則設計出的模塊具有兩個主要的特征:
1.對于擴展是開放的(open for extension).
2.對于修改是封閉的(close for modification).

如何做到了?:抽象

遵循OCP的Shape程序代碼如下:

public interface Shape {
    void draw();
}

public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("draw a square");
    }
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("draw a circle");
    }
}

public class DrawAllShapes {
    public static void main(String[] args) {

        ArrayList<Shape> shapes=new ArrayList<>();
        shapes.add(new Square());
        shapes.add(new Circle());
        drawAllShapes(shapes);
    }

    static void drawAllShapes(List<Shape> shapes) {
        for (Shape shape : shapes) {
            shape.draw();
        }
    }
}

如果我們想要擴展drawAllShapes函數的行為:繪制一種新的形狀,我們之需要增加一個新的實現Shape接口的派生類即可,而drawAllShapes函數并不需要改變。

OCP背后的主要機制是抽象和多態

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容