最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#面向?qū)ο缶幊讨薪涌诟綦x原則的示例詳解

 更新時(shí)間:2022年07月26日 11:38:05   作者:技術(shù)譯民  
在面向?qū)ο缶幊讨?,SOLID?是五個(gè)設(shè)計(jì)原則的首字母縮寫,旨在使軟件設(shè)計(jì)更易于理解、靈活和可維護(hù)。本文將通過實(shí)例詳細(xì)講講C#面向?qū)ο缶幊讨薪涌诟綦x原則,需要的可以參考一下

在面向?qū)ο缶幊讨校?strong>SOLID 是五個(gè)設(shè)計(jì)原則的首字母縮寫,旨在使軟件設(shè)計(jì)更易于理解、靈活和可維護(hù)。這些原則是由美國(guó)軟件工程師和講師羅伯特·C·馬丁(Robert Cecil Martin)提出的許多原則的子集,在他2000年的論文《設(shè)計(jì)原則與設(shè)計(jì)模式》中首次提出。

SOLID 原則包含:

本文我們來(lái)介紹接口隔離原則。

接口隔離原則

接口隔離原則(Interface segregation principle,ISP)認(rèn)為“多個(gè)特定用戶接口要好于一個(gè)寬泛用途的接口”。

它指明用戶(client)不應(yīng)被迫使用對(duì)其而言無(wú)用的方法或功能。接口隔離原則將龐大臃腫的接口拆分成為更小、更具體的接口,讓用戶僅需知道他們感興趣的方法。這種縮小了的接口也被稱為角色接口(role interfaces)。接口隔離原則的目的是將系統(tǒng)解耦,從而使其易于重構(gòu)、更改和重新部署。

C# 示例

糟糕的示范

創(chuàng)建一個(gè)包含公司部門的 ICompanyDepartment 接口。

interface ICompanyDepartment
{
    public void AdminDepartment();
    public void FinanaceDepartment();
    public void HRDepartment();
    public void ITDepartment();
}

讓我們首先為 A 公司實(shí)現(xiàn) ICompanyDepartment 接口,文件名為 ACompany.cs:

class ACompany : ICompanyDepartment
{
    public void AdminDepartment()
    {
        //DO SOMETHING
    }
    public void FinanaceDepartment()
    {
        //DO SOMETHING
    }
    public void HRDepartment()
    {
        //DO SOMETHING
    }
    public void ITDepartment()
    {
        //DO SOMETHING
    }
}

假如現(xiàn)在有一個(gè)從事制造業(yè)的 B 公司,他們沒有 IT 部門,而多了一個(gè)生產(chǎn)部門,那么上面的實(shí)現(xiàn)就有問題了。

如果在接口 ICompanyDepartment 上添加一個(gè) ManufacturingDepartment 生產(chǎn)部門,那我們就不得不在 ACompany 和 BCompany 兩個(gè)類上都實(shí)現(xiàn)該簽名。

也就是說(shuō),為了使用 ICompanyDepartment 接口,我們不得不在 ACompany 類上實(shí)現(xiàn)不必要的 ManufacturingDepartment 方法,在 BCompany 類上實(shí)現(xiàn)不必要的 ITDepartment 方法。這明顯違反了接口隔離原則。

為了使其符合接口隔離原則,我們需要進(jìn)行一些修改。

正確的示范

根據(jù)接口隔離原則,我們要將 ITDepartment 和 ManufacturingDepartment 方法從接口 ICompanyDepartment 拆分出來(lái),形成兩個(gè)獨(dú)立的角色接口

  • IACompanyUniqueFeature
  • IBCompanyUniqueFeature

這樣我們就擁有了三個(gè)接口:

interface ICompanyDepartment
{
    public void AdminDepartment();
    public void FinanaceDepartment();
    public void HRDepartment();
}
interface IACompanyUniqueFeature
{
    public void ITDepartment();
}
interface IBCompanyUniqueFeature
{
    public void ManufacturingDepartment();
}

類 ACompany 和 BCompany 的實(shí)現(xiàn)如下:

class ACompany : ICompanyDepartment, IACompanyUniqueFeature
{
    public void AdminDepartment()
    {
        //DO SOMETHING
    }
    public void FinanaceDepartment()
    {
        //DO SOMETHING
    }
    public void HRDepartment()
    {
        //DO SOMETHING
    }
    public void ITDepartment()
    {
        //DO SOMETHING
    }
}

class BCompany : ICompanyDepartment, IBCompanyUniqueFeature
{
    public void AdminDepartment()
    {
        //DO SOMETHING
    }
    public void FinanaceDepartment()
    {
        //DO SOMETHING
    }
    public void HRDepartment()
    {
        //DO SOMETHING
    }
    public void ManufacturingDepartment()
    {
        //DO SOMETHING
    }
}

這樣,以上的接口設(shè)計(jì)便遵循了接口隔離原則。

總結(jié)

本文我介紹了 SOLID 原則中的接口隔離原則(Interface segregation principle),并通過 C# 代碼示例簡(jiǎn)明地詮釋了它的含意和實(shí)現(xiàn),希望對(duì)您有所幫助。

參考文檔:

https://www.c-sharpcorner.com/blogs/interface-segregation-principle-in-c-sharp

以上就是C#面向?qū)ο缶幊讨薪涌诟綦x原則的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C#接口隔離原則的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Unity游戲開發(fā)實(shí)現(xiàn)場(chǎng)景切換示例

    Unity游戲開發(fā)實(shí)現(xiàn)場(chǎng)景切換示例

    這篇文章主要為大家介紹了Unity游戲開發(fā)實(shí)現(xiàn)場(chǎng)景切換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • C#中C/S端實(shí)現(xiàn)WebService服務(wù)

    C#中C/S端實(shí)現(xiàn)WebService服務(wù)

    本文主要介紹了C#中C/S端實(shí)現(xiàn)WebService服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C#如何自動(dòng)識(shí)別文件的編碼

    C#如何自動(dòng)識(shí)別文件的編碼

    相信每位程序員在日常學(xué)習(xí)工作中,文件編碼識(shí)別是必不可少的,一旦編碼錯(cuò)誤就會(huì)出現(xiàn)讓人頭疼的亂碼,那么下面這篇文章將給大家介紹如何通過C#來(lái)自動(dòng)識(shí)別文件的編碼。文中給出了詳細(xì)的示例代碼,對(duì)大家的理解很有幫助,下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • C#?二進(jìn)制序列化和反序列化的具體實(shí)現(xiàn)

    C#?二進(jìn)制序列化和反序列化的具體實(shí)現(xiàn)

    本文主要介紹了C#?二進(jìn)制序列化和反序列化的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C# 編譯生成dll文件供程序調(diào)用的兩種方法

    C# 編譯生成dll文件供程序調(diào)用的兩種方法

    這篇文章主要介紹了C# 編譯生成dll文件供程序調(diào)用的兩種方法,需要的朋友可以參考下
    2018-03-03
  • C#如何讓winform程序中的輸入文本框保留上次的輸入

    C#如何讓winform程序中的輸入文本框保留上次的輸入

    這篇文章主要介紹了C#如何讓winform程序中的輸入文本框保留上次的輸入問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C#中sealed修飾符的具體使用

    C#中sealed修飾符的具體使用

    在 C# 中,sealed?是一個(gè)修飾符,用于限制繼承和重寫,本文就來(lái)介紹一下具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 基于Json序列化和反序列化通用的封裝完整代碼

    基于Json序列化和反序列化通用的封裝完整代碼

    JSON 是存儲(chǔ)和交換文本信息的語(yǔ)法。類似 XML。JSON 比 XML 更小、更快,更易解析。下面通過實(shí)例代碼給大家分享Json序列化和反序列化通用的封裝,需要的的朋友參考下吧
    2017-07-07
  • Unity?制作一個(gè)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)

    Unity?制作一個(gè)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)

    項(xiàng)目中經(jīng)常遇到分?jǐn)?shù)統(tǒng)計(jì)的需求,例如操作正確則計(jì)分,相反則不計(jì)分失去該項(xiàng)分?jǐn)?shù),為了應(yīng)對(duì)需求需要一個(gè)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)。本文主要介紹了通過Unity實(shí)現(xiàn)這樣的一個(gè)計(jì)分系統(tǒng),快來(lái)跟隨小編一起學(xué)習(xí)吧
    2021-12-12
  • C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法

    C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法

    這篇文章主要介紹了C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

四川省| 大同县| 江陵县| 肃宁县| 图片| 凯里市| 长武县| 新宾| 门头沟区| 新宾| 沛县| 红安县| 北流市| 连南| 虹口区| 金昌市| 沂源县| 长春市| 霍邱县| 伽师县| 吉木萨尔县| 台东县| 淄博市| 临夏市| 张家港市| 绥江县| 正定县| 景德镇市| 西昌市| 全州县| 南阳市| 海城市| 志丹县| 巴南区| 成都市| 东光县| 拉孜县| 平阴县| 遵义县| 闵行区| 内江市|