C#面向對象編程中的接口隔離原則是什么
本篇內容介紹了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。
評論