C#面向對象編程中的接口隔離原則是什么

蝸牛 互聯網技術資訊 2022-07-14 16 0

本篇內容介紹了“C#面向對象編程中的接口隔離原則是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    接口隔離原則

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

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

    C# 示例

    糟糕的示范

    創建一個包含公司部門的?ICompanyDepartment?接口。

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

    讓我們首先為 A 公司實現?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
    ????}
    }

    假如現在有一個從事制造業的 B 公司,他們沒有 IT 部門,而多了一個生產部門,那么上面的實現就有問題了。

    如果在接口?ICompanyDepartment?上添加一個?ManufacturingDepartment?生產部門,那我們就不得不在?ACompany?和?BCompany?兩個類上都實現該簽名。

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

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

    正確的示范

    根據接口隔離原則,我們要將?ITDepartment?和?ManufacturingDepartment?方法從接口?ICompanyDepartment?拆分出來,形成兩個獨立的角色接口

    • IACompanyUniqueFeature

    • IBCompanyUniqueFeature

    這樣我們就擁有了三個接口:

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

    類?ACompany?和?BCompany?的實現如下:

    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
    ????}
    }

    這樣,以上的接口設計便遵循了接口隔離原則。

    “C#面向對象編程中的接口隔離原則是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注蝸牛博客網站,小編將為大家輸出更多高質量的實用文章!

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    評論

    2018人人澡人摸人人添_月夜影视在线观看资源_一本二卡三卡四卡乱码小说_tobu8在线观看下载