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...