国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

門戶網(wǎng)站開發(fā)框架qq群怎么優(yōu)化排名靠前

門戶網(wǎng)站開發(fā)框架,qq群怎么優(yōu)化排名靠前,簡歷模板免費(fèi)使用手機(jī)版,企業(yè)建站系統(tǒng)插件介紹1.背景 2002 年羅伯特C.馬丁給“接口隔離原則”的定義是:客戶端不應(yīng)該被迫依賴于它不使用的方法(Clients should not be forced to depend on methods they do not use)。該原則還有另外一個(gè)定義:一個(gè)類對另一個(gè)類的依賴應(yīng)該建立…

1.背景

2002 年羅伯特·C.馬丁給“接口隔離原則”的定義是:客戶端不應(yīng)該被迫依賴于它不使用的方法(Clients should not be forced to depend on methods they do not use)。該原則還有另外一個(gè)定義:一個(gè)類對另一個(gè)類的依賴應(yīng)該建立在最小的接口上(The dependency of one class to another one should depend on the smallest possible interface)。

2.概念

接口隔離原則(Interface Segregation Principle,ISP)要求程序員盡量將臃腫龐大的接口拆分成更小的和更具體的接口,讓接口中只包含客戶感興趣的方法。

通俗的講:

  • 一個(gè)類對另外一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上的;

  • 一個(gè)接口代表一個(gè)角色,不應(yīng)當(dāng)將不同的角色都交給一個(gè)接口。沒有關(guān)系的接口合并在一起,形成一個(gè)臃腫的大接口,這是對角色和接口的污染;

  • 使用多個(gè)專門的接口比使用單一的總接口要好;

  • 不要強(qiáng)迫客戶使用它們不用的方法,如果強(qiáng)迫用戶使用它們不使用的方法,那么這些客戶就會面臨由于這些不使用的方法的改變所帶來的改變;

接口隔離原則和單一職責(zé)原則很像,都是為了提高類的內(nèi)聚性、降低它們之間的耦合性,體現(xiàn)了封裝的思想,但兩者是不同的:

  • 單一職責(zé)原則注重的是職責(zé),而接口隔離原則注重的是對接口依賴的隔離。

  • 單一職責(zé)原則主要是約束類,它針對的是程序中的實(shí)現(xiàn)和細(xì)節(jié);接口隔離原則主要約束接口,主要針對抽象和程序整體框架的構(gòu)建。

應(yīng)用接口隔離原則的建議:

  • 接口盡量小,但是要有限度,既不能是大而全的接口也不能是一個(gè)方法一個(gè)接口,這樣就失去了面向抽象的意義,應(yīng)該按照功能的密不可分來定義接口,而且應(yīng)該是動態(tài)的,因?yàn)殡S著業(yè)務(wù)發(fā)展功能需求是有變化的,所以我們在設(shè)計(jì)的時(shí)候要考慮留好提前量,避免抽象的變化;

  • 為依賴接口的類定制服務(wù),只提供調(diào)用者需要的方法,屏蔽不需要的方法;

  • 了解環(huán)境,拒絕盲從,每個(gè)項(xiàng)目或產(chǎn)品都有選定的環(huán)境因素,環(huán)境不同,接口拆分的標(biāo)準(zhǔn)就不同深入了解業(yè)務(wù)邏輯;

  • 提高內(nèi)聚,減少對外交互,使接口用最少的方法去完成最多的事情;

3.案例分析

需求:我們要開發(fā)一個(gè)學(xué)生成績管理項(xiàng)目,包含插入成績、刪除成績、修改成績、計(jì)算總分、計(jì)算均分、打印成績信息、査詢成績信息等功能;如果將這些功能全部放到一個(gè)接口中顯然不太合理,正確的做法是將它們分別放在輸入模塊、統(tǒng)計(jì)模塊和打印模塊等 3 個(gè)模塊中。

/// <summary>/// 輸入模塊/// </summary>public interface IInputModule{/// <summary>/// 添加成績/// </summary>void Insert();/// <summary>/// 刪除成績/// </summary>void Delete();/// <summary>/// 修改成績/// </summary>void Modify();}/// <summary>/// 統(tǒng)計(jì)模塊/// </summary>public interface ICountModule{/// <summary>/// 計(jì)算總分/// </summary>void CountTotalScore();/// <summary>/// 計(jì)算平均分/// </summary>void CountAverage();}/// <summary>/// 打印模塊/// </summary>public interface IPrintModule{/// <summary>/// 打印學(xué)生信息/// </summary>void PrintStudentInfo();/// <summary>/// 查詢學(xué)生信息/// </summary>void QueryStudentInfo();}/// <summary>/// 實(shí)現(xiàn)類/// </summary>public class StudentSoreList : IInputModule, ICountModule, IPrintModule{private StudentSoreList(){}public static IInputModule GetInputModule(){return (IInputModule)new StudentSoreList();}public static ICountModule GetCountModule(){return (ICountModule)new StudentSoreList();}public static IPrintModule GetPrintModule(){return (IPrintModule)new StudentSoreList();}public void Insert(){Console.WriteLine("輸入模塊的Insert()方法被調(diào)用!");}public void Delete(){Console.WriteLine("輸入模塊的Delete()方法被調(diào)用!");}public void Modify(){Console.WriteLine("輸入模塊的Modify()方法被調(diào)用!");}public void CountTotalScore(){Console.WriteLine("統(tǒng)計(jì)模塊的CountTotalScore()方法被調(diào)用!");}public void CountAverage(){Console.WriteLine("統(tǒng)計(jì)模塊的CountAverage()方法被調(diào)用!");}public void PrintStudentInfo(){Console.WriteLine("打印模塊的PrintStudentInfo()方法被調(diào)用!");}public void QueryStudentInfo(){Console.WriteLine("打印模塊的QueryStudentInfo()方法被調(diào)用!");}}{//ISP:接口隔離原則IInputModule inputModule = StudentSoreList.GetInputModule();inputModule.Insert();ICountModule countModule = StudentSoreList.GetCountModule();countModule.CountTotalScore();IPrintModule printModule = StudentSoreList.GetPrintModule();printModule.PrintStudentInfo();}

4.優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 將臃腫龐大的接口分解為多個(gè)粒度小的接口,可以預(yù)防外來變更的擴(kuò)散,提高系統(tǒng)的靈活性和可維護(hù)性;

  • 接口隔離提高了系統(tǒng)的內(nèi)聚性,減少了對外交互,降低了系統(tǒng)的耦合性;

  • 如果接口的粒度大小定義合理,能夠保證系統(tǒng)的穩(wěn)定性;但是,如果定義過小,則會造成接口數(shù)量過多,使設(shè)計(jì)復(fù)雜化;如果定義太大,靈活性降低,無法提供定制服務(wù),給整體項(xiàng)目帶來無法預(yù)料的風(fēng)險(xiǎn);

  • 使用多個(gè)專門的接口還能夠體現(xiàn)對象的層次,因?yàn)榭梢酝ㄟ^接口的繼承,實(shí)現(xiàn)對總接口的定義;

  • 能減少項(xiàng)目工程中的代碼冗余。過大的大接口里面通常放置許多不用的方法,當(dāng)實(shí)現(xiàn)這個(gè)接口的時(shí)候,被迫設(shè)計(jì)冗余的代碼;

缺點(diǎn):

  • 需要掌握接口細(xì)分的程度,如果太細(xì),會造成接口膨脹,增加系統(tǒng)的復(fù)雜性;

http://m.aloenet.com.cn/news/39427.html

相關(guān)文章:

  • 用bootstrap做網(wǎng)站管理系統(tǒng)優(yōu)秀網(wǎng)站設(shè)計(jì)賞析
  • 平面設(shè)計(jì)如何在家接單seo網(wǎng)絡(luò)優(yōu)化培訓(xùn)
  • 設(shè)計(jì)網(wǎng)站 常用字體百度推廣怎么聯(lián)系
  • 有阿里云主機(jī)管理平臺如何自己做網(wǎng)站市場監(jiān)督管理局是干什么的
  • 正能量軟件不良網(wǎng)站免費(fèi)入口好看的友情鏈接代碼
  • 網(wǎng)站商城建站谷歌 翻墻入口
  • qq自動發(fā)貨平臺網(wǎng)站怎么做嘉定區(qū)整站seo十大排名
  • app設(shè)計(jì)素材網(wǎng)站2023新聞大事10條
  • 中英文雙語企業(yè)網(wǎng)站長春關(guān)鍵詞優(yōu)化平臺
  • 聊城陽谷網(wǎng)站建設(shè)百度官網(wǎng)優(yōu)化
  • 小程序個(gè)人開發(fā)全過程天津seo推廣
  • 石家莊網(wǎng)絡(luò)公司查封??趕eo計(jì)費(fèi)
  • 鄭州網(wǎng)站建設(shè)電話seo外鏈推廣員
  • 下載app到手機(jī)seo系統(tǒng)是什么
  • 外貿(mào)網(wǎng)站開發(fā)公司百度上怎么發(fā)布信息啊
  • 臨沂蒼山網(wǎng)站建設(shè)百度聯(lián)盟
  • wordpress 電話鶴壁seo推廣
  • 做任務(wù)賺q紅包的網(wǎng)站百度統(tǒng)計(jì)收費(fèi)嗎
  • ps網(wǎng)站頭部如何優(yōu)化培訓(xùn)方式
  • 找別人做網(wǎng)站需要注意什么百度權(quán)重10的網(wǎng)站
  • 臨沂網(wǎng)站建設(shè)設(shè)計(jì)百度識圖網(wǎng)站
  • 網(wǎng)上服裝設(shè)計(jì)培訓(xùn)班seo推廣具體做什么
  • 鄭州網(wǎng)站seo優(yōu)微信朋友圈廣告在哪里做
  • 廣州小型網(wǎng)站建設(shè)公司平面設(shè)計(jì)正規(guī)培訓(xùn)機(jī)構(gòu)
  • 視頻彈幕網(wǎng)站怎么做百度搜索提交入口
  • 個(gè)人做商城網(wǎng)站大概多少錢友鏈網(wǎng)站
  • 做網(wǎng)站商城開發(fā)什么語言最快seo站內(nèi)優(yōu)化培訓(xùn)
  • 煙臺企業(yè)網(wǎng)站開發(fā)清博大數(shù)據(jù)輿情監(jiān)測平臺
  • 自己的主機(jī)做服務(wù)器網(wǎng)站如何備案網(wǎng)站多少錢
  • 網(wǎng)站建設(shè)成果seo 頁面鏈接優(yōu)化