設計模式七大原則之開閉原則

2021-10-24 16:54:39 字數 1752 閱讀 7837

開閉原則(open close principle)簡稱ocp原則, 指的是對擴充套件開放, 對修改關閉.

3.1 類圖

這裡主要就是通過graphic類可以作出不同的形狀, 但是值得關注的是, 這裡是通過控制abstractshape實現類的type屬性作出不同的形狀. 當我們要擴充套件矩形時, 雖然擴充套件開放直接定義矩形類繼承abstractshape即可, 但是針對使用方graphic類, 我們還要修改graphic類並且新增畫矩形的方法, 並且修改通用方法draw,不滿足修改關閉.

3.2 **示例

package com.inconspicuousy.principle.ocp.error;

/** 基類 */

abstract

class

abstractshape

/** 圓形 */

class

circle

extends

abstractshape

}/** 三角形 */

class

********

extends

abstractshape

}// 使用方

class

graphic

private

void draw******** (

)/** 根據shape的型別畫出不同的形狀 */

public

void

draw

(abstractshape shape)}}

/** * 開放關閉原則錯誤案例

* @author peng.yi

*/public

class

ocperrorexample

}

4.1 類圖

這裡直接將具體畫圖的方法提公升到各自的實現類中, 使用方graphic類直接呼叫具體的實現類draw方法即可. 當我們要擴充套件矩形時直接建立矩形類繼承abstractshape類實現draw方法即可, 對於使用方我們直接在draw方法中傳入矩形類即可, 滿足對修改關閉原則.

4.2 **示例

package com.inconspicuousy.principle.ocp.correct;

/** 抽象形狀類 */

abstract

class

abstractshape

class

circle

extends

abstractshape

}class

********

extends

abstractshape

}class

graphic

}/**

* ocp原則正確示例

* @author peng.yi

*/public

class

ocpcorrectexample

}

設計模式七大原則之開閉原則

簡介 開閉原則是程式設計過程中最基礎 最重要的原則,前面講到的幾個原則,也都是為了實現開閉原則。那麼他是如何開放,又是如何關閉的呢?例項展示 這是乙個用於繪圖的類 使用方 class graphiceditor else if shape.my type 2 else if shape.my typ...

設計模式之七大原則 開閉原則

主要內容 提供方 擴充套件開放,使用方 修改關閉 盡量通過擴充套件實現變化,而不是修改,避免對原來的系統造成威脅 例子class graphiceditor else if s.m type 2 public void drawrectangle shape r public void drawci...

設計模式七大原則之開閉原則

開閉原則是程式設計中最基礎 最重要的設計原則。乙個軟體實體 類 模組 方法等 應該對擴充套件新功能開放,對修改原有功能關閉。用抽象構建框架,用實現擴充套件細節。當軟體需要新增乙個功能時,盡量在原有 基礎上進行擴充套件,而不是修改原有 以書店銷售書籍為例來說明什麼是開閉原則 public inte c...