設計模式 開閉原則

2021-10-10 08:46:41 字數 2041 閱讀 1205

ocp原則:開閉原則

1、對外能擴充套件(提供方)

2、對修改關閉(使用方)

下面這段**實現了繪製形狀的功能,如果設計如下:

package ocp;

/** * @author lihaiyu

* @date 2020/11/8 20:50

*/public class ocp

}/**

* 這是乙個用於繪製圖形的類,【使用方】

*/class graphiceditor

else if(shape.mtype==2)

}private void drawrectangle(shape shape)

private void drawcircle(shape shape)

}/**

* 基類

下面新增乙個繪製三角形,來看一下**改動了多少:

/**

* 這是乙個用於繪製圖形的類,【使用方】

*/class graphiceditor

else if(shape.mtype==2)

else if(shape.mtype==3)

}private void drawrectangle(shape shape)

private void drawcircle(shape shape)

private void draw********(shape shape)

}/**

* 基類

*/class shape

class rectangle extends shape

}class circle extends shape

}/**

* 增加繪製三角形的類

*/class ******** extends shape

}

1、擴充套件新增類

/**

* 增加繪製三角形的類

*/class ******** extends shape

}

2、使用方增加了新方法也要修改

class graphiceditor

else if(shape.mtype==2)

else if(shape.mtype==3)

}private void drawrectangle(shape shape)

private void drawcircle(shape shape)

private void draw********(shape shape)

}

顯然違背了ocp原則,我們是希望使用方的修改是關閉的根據開閉原則ocp修改**:

}//使用方

class graphiceditor

}/**

* 基類

*/abstract class shape

class rectangle extends shape

}class circle extends shape

}/**

* 增加繪製三角形的類

*/class ******** extends shape

}

設計模式 開閉原則

開閉原則的核心是 對擴充套件開放,對修改關閉 白話意思就是我們改變乙個軟體時 比如擴充套件其他功能 應該通過擴充套件的方式來達到軟體的改變,而不應愛修改原有 來實現變化 軟體系統中包含的各種元件,例如模組 modules 類 classes 以及功能 functions 等等,應該在不修改現有 的基...

設計模式 開閉原則

設計模式 開閉原則 即 對立與統一原則 軟體實體應該對擴充套件開放,對修改關閉,即實體應當通過擴充套件實現變化,而不是修改 實現變化 什麼是軟體實體,專案或軟體中按照一定邏輯規劃劃分的模組 抽象 類 方法書店銷售書籍 然後書寫 如下 書籍介面 public inte ce ibook 書店 類書籍,...

開閉原則 設計模式

介紹 乙個軟體實體如類,模組和函式應該對擴充套件開放 對提供方 對修改關閉 對使用方 用抽象構建框架,用實現擴充套件細節。使用方 用於繪圖的類 class graphiceditor else if s.m type 2 else if s.m type 3 public void drawrect...