C#面向?qū)ο笤O(shè)計原則之開閉原則
開閉原則(OCP)
定義:對擴展開發(fā),對修改關(guān)閉。
好處:
- 適應(yīng)性和靈活性。
- 穩(wěn)定性和延續(xù)性。
- 可復(fù)用性與可維護性。
解釋說明:開閉原則指的是兩方面:對功能擴展開發(fā),對修改進行關(guān)閉;有時當(dāng)用戶要求或需求發(fā)生變化時,我們不得不打開原來的代碼進行修改,進行功能的擴展或增加,這種設(shè)計如果應(yīng)用到我們以后的項目開發(fā)中會導(dǎo)致嚴(yán)重的問題,這樣容易導(dǎo)致意外的錯誤。好的程序,應(yīng)該保證在我們進行程序擴展時,不會更改以前的代碼。如何才能保證這樣的效果呢?我們在定義一個類的功能時:最好先定義他的抽象類或接口,這樣在功能擴展時,我們只需要在原來抽象類和接口的基礎(chǔ)上編寫新的實現(xiàn)類和子類,這樣既能擴展功能又不影響以前的功能。
示例:
定義數(shù)據(jù)庫鏈接的接口
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 開閉原則_OCP_
{
/// <summary>
/// 數(shù)據(jù)庫連接
/// </summary>
public interface IDbConnection
{
public DbConnection GetConnection();
}
}分別定義兩個接口的實現(xiàn)類
SQL Server數(shù)據(jù)庫實現(xiàn)類:
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
namespace 開閉原則_OCP_
{
public class SqlServerDbConnection :IDbConnection
{
public DbConnection GetConnection()
{
// 連接數(shù)據(jù)庫并返回
return new SqlConnection();
}
}
}Oracle數(shù)據(jù)庫實現(xiàn)類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OracleClient;
using System.Data.Common;
using System.Data.OracleClient;
namespace 開閉原則_OCP_
{
public class OracleDbConnection:IDbConnection
{
public DbConnection GetConnection()
{
// 連接數(shù)據(jù)庫并返回
return new OracleConnection();
}
}
}如果又增加了一個數(shù)據(jù)庫,只需要在定義一個接口的實現(xiàn)類就可以。接口不會發(fā)生變化,接口的實現(xiàn)類實現(xiàn)了多樣性,這樣就實現(xiàn)了開閉原則。
代碼下載鏈接:點此下載
到此這篇關(guān)于C#面向?qū)ο笤O(shè)計原則之開閉原則的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#多線程之Thread中Thread.Join()函數(shù)用法分析
這篇文章主要介紹了C#多線程之Thread中Thread.Join()函數(shù)用法,實例分析了Thread.Join()方法的原理與使用技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
C#調(diào)用OpenCV開發(fā)簡易版美圖工具【推薦】
本文主要介紹在WPF項目中使用OpenCVSharp3-AnyCPU開源類庫處理圖片,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2019-10-10
C#結(jié)合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內(nèi)容的方法
這篇文章主要介紹了C#結(jié)合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內(nèi)容的方法,非常實用的功能,需要的朋友可以參考下2014-07-07

