日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語言 正文

C#面向?qū)ο笤O(shè)計(jì)原則之開閉原則_C#教程

作者:.NET開發(fā)菜鳥 ? 更新時(shí)間: 2022-05-03 編程語言

開閉原則(OCP)

定義:對(duì)擴(kuò)展開發(fā),對(duì)修改關(guān)閉。
好處:

  • 適應(yīng)性和靈活性。
  • 穩(wěn)定性和延續(xù)性。
  • 可復(fù)用性與可維護(hù)性。

解釋說明:開閉原則指的是兩方面:對(duì)功能擴(kuò)展開發(fā),對(duì)修改進(jìn)行關(guān)閉;有時(shí)當(dāng)用戶要求或需求發(fā)生變化時(shí),我們不得不打開原來的代碼進(jìn)行修改,進(jìn)行功能的擴(kuò)展或增加,這種設(shè)計(jì)如果應(yīng)用到我們以后的項(xiàng)目開發(fā)中會(huì)導(dǎo)致嚴(yán)重的問題,這樣容易導(dǎo)致意外的錯(cuò)誤。好的程序,應(yīng)該保證在我們進(jìn)行程序擴(kuò)展時(shí),不會(huì)更改以前的代碼。如何才能保證這樣的效果呢?我們?cè)诙x一個(gè)類的功能時(shí):最好先定義他的抽象類或接口,這樣在功能擴(kuò)展時(shí),我們只需要在原來抽象類和接口的基礎(chǔ)上編寫新的實(shí)現(xiàn)類和子類,這樣既能擴(kuò)展功能又不影響以前的功能。

示例:

定義數(shù)據(jù)庫(kù)鏈接的接口

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 開閉原則_OCP_
{
    /// 
    /// 數(shù)據(jù)庫(kù)連接
    /// 
    public interface IDbConnection
    {
        public DbConnection GetConnection();   
    }
}

分別定義兩個(gè)接口的實(shí)現(xiàn)類

SQL Server數(shù)據(jù)庫(kù)實(shí)現(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ù)庫(kù)并返回
            return new SqlConnection();
        }
    }
}

Oracle數(shù)據(jù)庫(kù)實(shí)現(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ù)庫(kù)并返回
            return new OracleConnection();
        }
    }
}

如果又增加了一個(gè)數(shù)據(jù)庫(kù),只需要在定義一個(gè)接口的實(shí)現(xiàn)類就可以。接口不會(huì)發(fā)生變化,接口的實(shí)現(xiàn)類實(shí)現(xiàn)了多樣性,這樣就實(shí)現(xiàn)了開閉原則。

代碼下載鏈接:點(diǎn)此下載

原文鏈接:https://www.cnblogs.com/dotnet261010/p/7349890.html

欄目分類
最近更新