定義:軟體實體應該是可以擴充套件,但是不可修改,對擴充套件開放,對更改封閉
場景:某公司需要招聘3類員工,分別是:主管,程式設計師,銷售。公司根據不同的員工的需求,配置不同的資源。比如程式設計師應該配台電腦。
首先定義乙個 員工型別 列舉
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
設計模式原則.開放封閉
}
定義乙個公司類,公司類裡需要有個分配資源方法 allot(employeetype emp);
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
設計模式原則.開放封閉
return"";}}
}
客戶端實現
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
設計模式原則.開放封閉;
namespace
設計模式原則
}}
第一版實現中,當公司需要招聘更多不同型別的員工時,就需要對company類的allot方法進行修改,還得對employeetype類進行修改,顯然是不符合 開放-封閉原則的。
首先定義乙個 員工介面 employee ,並宣告乙個員工需求方法need();
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
設計模式原則.開放封閉
}
然後定義不同型別的員工類,並且實現employee介面。
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
設計模式原則.開放封閉
}//銷售類
public
class
selleremployee:employee
}//主管類
public
class
headeremployee:employee
}}
定義乙個公司類,公司類裡需要有個分配資源方法 allot2
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
namespace
設計模式原則.開放封閉
}}
客戶端實現
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
設計模式原則.開放封閉;
namespace
設計模式原則
}}
第二版實現中,當公司需要招聘更多不同型別的員工時,比如美工,就只需要新增乙個美工類並實現employee介面。此版本實現了對修改封閉,對擴充套件開放。
設計模式 開放封閉原則
物件導向設計原則中,最重要的原則就是此原則。開放封閉原則解釋 軟體實體 類,模組,函式等 應該是可以擴充套件的,但是是不可以修改的。開放封閉原則有兩大特徵要牢記 一 對於擴充套件是開放的 二 對於修改是封閉的 為什麼要用到開放封閉原則?我們在做任何系統的時候,都不要指望系統一開始就需求確定,這是不現...
設計模式 開放封閉原則
物件導向設計原則中,最重要的原則就是此原則。開放封閉原則解釋 軟體實體 類,模組,函式等 應該是可以擴充套件的,但是是不可以修改的。開放封閉原則有兩大特徵要牢記 一 對於擴充套件是開放的 二 對於修改是封閉的 為什麼要用到開放封閉原則?我們在做任何系統的時候,都不要指望系統一開始就需求確定,這是不現...
設計模式之開放封閉原則
親愛的博友們,感謝來到darren的部落格 最近一直很忙,今天抽空開了一下開放封閉原則,再這裡和各位分享一下學習心得 開放封閉原則 軟體實體 類,模組,函式 等等,對於擴充套件是開放的,對於修改是封閉的。對於程式設計而言,怎麼的設計才能面對需求的改變卻可以保持相對的穩定,從而可以使得系統可以再第乙個...