C#面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則
接口隔離原則(ISP)
定義:使用多個(gè)專門的接口比使用單一的總接口要好。即不要把雞蛋都放到一個(gè)籃子里。
好處:比較靈活、方便,不想實(shí)現(xiàn)的或不用實(shí)現(xiàn)的可以不實(shí)現(xiàn)。
解釋說明:
大部分人都喜歡用一個(gè)接口把需要用到的方法全部聲明出來,但是ISP建議我們使用多個(gè)專門的接口比使用單一的總接口要好,也就是一個(gè)接口里的方法多的話,實(shí)現(xiàn)起來不是很方便。
示例1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 接口隔離原則
{
/// <summary>
/// 定義一個(gè)學(xué)習(xí)電腦的接口
/// </summary>
public interface ILearnComputer
{
}
/// <summary>
/// 定義一個(gè)上網(wǎng)電腦的接口
/// </summary>
public interface INetComputer
{ }
/// <summary>
/// 定義一個(gè)學(xué)生電腦類,實(shí)現(xiàn)學(xué)習(xí)電腦的接口和上網(wǎng)電腦的接口
/// </summary>
public class StudentComputer : ILearnComputer, INetComputer
{
public void Learn()
{
Console.WriteLine("學(xué)習(xí)");
}
public void NetPlay()
{
Console.WriteLine("上網(wǎng)");
}
}
}在上面的示例代碼中,定義了兩個(gè)接口,一個(gè)具體的電腦類實(shí)現(xiàn)了兩個(gè)接口。如果只想上網(wǎng),只實(shí)現(xiàn)上網(wǎng)的接口就可以;如果只想學(xué)習(xí),則只實(shí)現(xiàn)學(xué)習(xí)的接口就可以。
示例2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 接口隔離原則
{
/// <summary>
/// 定義一個(gè)學(xué)習(xí)電腦的接口
/// </summary>
public interface ILearnComputer
{
}
/// <summary>
/// 定義一個(gè)上網(wǎng)電腦的接口
/// </summary>
public interface INetComputer
{ }
/// <summary>
/// 定義一個(gè)學(xué)生電腦的抽象類,實(shí)現(xiàn)學(xué)習(xí)電腦的接口和上網(wǎng)電腦的接口
/// </summary>
public abstract class StudentComputer : ILearnComputer, INetComputer
{
public abstract void Learn();
public abstract void NetPlay();
}
}具體操作時(shí),抽象類和接口搭配進(jìn)行使用。使用抽象類實(shí)現(xiàn)接口,在調(diào)用的時(shí)候使用抽象類進(jìn)行變量的聲明。
代碼下載鏈接:點(diǎn)此下載
到此這篇關(guān)于C#面向?qū)ο笤O(shè)計(jì)原則之接口隔離原則的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則
- C#面向?qū)ο笤O(shè)計(jì)原則之組合/聚合復(fù)用原則
- C#面向?qū)ο笤O(shè)計(jì)原則之里氏替換原則
- C#面向?qū)ο笤O(shè)計(jì)原則之單一職責(zé)原則
- C#面向?qū)ο笤O(shè)計(jì)原則之開閉原則
- C#實(shí)現(xiàn)六大設(shè)計(jì)原則之迪米特法則
- C#實(shí)現(xiàn)六大設(shè)計(jì)原則之接口隔離原則
- C#實(shí)現(xiàn)六大設(shè)計(jì)原則之里氏替換原則
- C#實(shí)現(xiàn)六大設(shè)計(jì)原則之單一職責(zé)原則
- 淺談C#六大設(shè)計(jì)原則
- C#編程之依賴倒置原則DIP
相關(guān)文章
Unity3D舊電視濾鏡shader的實(shí)現(xiàn)示例
這篇文章主要介紹了Unity3D舊電視濾鏡shader的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
c#判斷網(wǎng)絡(luò)連接狀態(tài)的示例分享
這篇文章主要介紹了使用c#判斷網(wǎng)絡(luò)連接狀態(tài)的示例,需要的朋友可以參考下2014-02-02
C# 獲取當(dāng)前月份天數(shù)的三種方法總結(jié)
本篇文章主要是對(duì)C#中獲取目前月份的天數(shù)的三種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01
C#基于正則表達(dá)式實(shí)現(xiàn)獲取網(wǎng)頁中所有信息的網(wǎng)頁抓取類實(shí)例
這篇文章主要介紹了C#基于正則表達(dá)式實(shí)現(xiàn)獲取網(wǎng)頁中所有信息的網(wǎng)頁抓取類,結(jié)合完整實(shí)例形式分析了C#正則網(wǎng)頁抓取類與使用技巧,需要的朋友可以參考下2017-05-05

