亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式原則之接口隔離原則

2019-11-14 23:38:19
字體:
來源:轉載
供稿:網友
設計模式原則之接口隔離原則

在講接口隔離原則之前,我們先明確一下我們的主角,什么是接口,接口分為兩種:

一種是實例接口 (Object Interface),在 java 中聲明一個類,然后用 new 關鍵字產生的一個實例,它是對一個類型的事 物描述,這是一種接口,比如你定義個 Person 這個類,然后使用 Person zhangSan = new Person()產生了 一個實例,這個實例要遵從的標準就是 Person 這個類,Person 類就是 zhangSan 的接口,看不懂?不要緊, 那是讓 Java 語言浸染的時間太長了。主角已經出場了,那我們看它的原則是什么,它有兩種定義:

第一種定義: Clients should not be forced to depend upon interfaces that they don't use. 客戶端不應該依賴它不需用的接口。

第二種定義:The dependency of one class to another one should depend on the smallest possible interface。類間的依賴關系應該建立在最小的接口上。

一個新事物的定義一般都是比較難理解的,晦澀難懂是正常的,否則那會讓人家覺的你沒有水平,這 也是一些國際廠商在國內忽悠的基礎,不整些名詞怎么能讓你崇拜我呢?我們把這個定義剖析一下,先說 第一種定義客戶端不應該依賴它不需要接口,那依賴什么?依賴它需要的接口,客戶端需要什么接口就提 供什么借口,把不需要的接口剔除掉,那就需要對接口進行細化,保證其純潔性;再看第二個定義,類間 的依賴關系應該建立在最小的接口上,它要求是最小的接口,也是要求接口細化,接口純潔,與第一個定 義如出一轍,只是一個事物的兩種不同描述。

我們可以把這兩個定義概括為一句話:建立單一接口,不要建立臃腫龐大的接口。再通俗的一點講: 接口盡量細化,同時接口中的方法盡量的少??吹竭@里大家有可能要疑惑了,這與單一職責原則不是相同 的嗎?錯,接口隔離原則與單一職責的定義的規則是不相同的,單一職責要求的是類和接口職責單一,注 重的是職責,沒有要求接口的方法減少,例如一個職責可能包含 10 個方法,這 10 個方法都放在一個接口 中,并且提供給多個模塊訪問,各個模塊按照規定的權限來訪問,在系統外通過文檔約束不使用的方法不 要訪問,按照單一職責原則是允許的,按照接口隔離原則是不允許的,因為它要求“盡量使用多個專門的 接口”,專門的接口指什么?就是指提供給多個模塊的接口,提供給幾個模塊就應該有幾個接口,而不是建 立一個龐大的臃腫的接口,所有的模塊可以來訪問。

未遵循接口隔離原則的設計:

遵循接口隔離原則的設計:

根據接口隔離原則拆分接口時,必須首先滿足單一職責原則。

我們來舉個例子來說明接口隔離原則到底對我們提出了什么要求。現在男生對小姑娘的稱呼使用頻率 最高的應該是“美女”了吧,我們今天來定義一下什么是美女:首先要面貌好看,其次是身材要窈窕,然 后要有氣質,當然了,這三者各人的排列順序不一樣,總之要成為一名美女就必須具備:面貌、身材和氣質,我們用類圖類體現一下星探(當然,你也可以把你自己想想成星探)找美女的過程,看類圖:

定義了一個 ipettyGirl 接口,聲明所有的美女都應該有 goodLooking、niceFigure 和 greatTemperament,然后又定義了一個抽象類 AbstractSearcher,其作用就是搜索美女然后展示信息,只 要美女都是按照這個規范定義,Searcher(星探)就輕松的多了,我們先來看美女的定義:

public interface IPettyGirl {//要有姣好的面孔public void goodLooking();//要有好身材public void niceFigure();//要有氣質public void greatTemperament();}

美女就是這樣的一個定義,各位色狼別把口水流到了鍵盤上,然后我們看美女的實現類:

public class PettyGirl implements IPettyGirl {PRivate String name;//美女都有名字public PettyGirl(String _name){ this. name=_name; }//臉蛋漂亮public void goodLooking() { System. out.println(this. name + "---臉蛋很漂亮!"); }//氣質要好public void greatTemperament() { System. out.println(this. name + "---氣質非常好!"); }//身材要好public void niceFigure() { System. out.println(this. name + "---身材非常棒!"); }}

然后我們來看 AbstractSearcher 類,這個類一般就是指星探這個行業了,源代碼如下:

public abstract class AbstractSearcher {protected IPettyGirl pettyGirl;public AbstractSearcher(IPettyGirl _pettyGirl){ this.pettyGirl = _pettyGirl; }//搜索美女,列出美女信息public abstract void show();}

場景中的兩個角色美女和星探都已經完成了,我們再來寫個場景類,展示一下我們的這個過程:

public class Client {//搜索并展示美女信息public static void main(String[] args) { //定義一個美女 IPettyGirl yanYan = new PettyGirl(" 嫣嫣"); AbstractSearcher searcher = new Searcher(yanYan); searcher.show(); }}
星探查找到美女,打印出美女的信息,源碼如下:
public class Searcher extends AbstractSearcher{public Searcher(IPettyGirl _pettyGirl){ super(_pettyGirl); }//展示美女的信息public void show(){ System. out.println("--------美女的信息如下: ---------------"); //展示面容 super. pettyGirl.goodLooking(); //展示身材super. pettyGirl.niceFigure(); //展示氣質 super. pettyGirl.greatTemperament(); }}

運行結果如下:

--------美女的信息如下: ---------------嫣嫣---臉蛋很漂亮!嫣嫣---身材非常棒!嫣嫣---氣質非常好!

采用接口隔離原則:重新修改一下類圖:

把原 IPettyGirl 接口拆分為兩個接口,一種是外形美的美女 IGoodBodyGirl,這類美女的特點就是臉蛋和身材極棒,超一流,但是沒有審美素質,比如隨地吐痰,出口就是 KAO,CAO 之類的,文化程度比較低;另外一種是氣質美的美女 IGreatTemperamentGirl,談吐和修養都非常高。我們從一個比較臃腫的接口拆分成了兩個專門的接口,靈活性提高了,可維護性也增加了,不管以后是要外形美的美女還是氣質美的美女都可以輕松的通過 PettyGirl 定義。我們先看兩種類型的美女接口:

public interface IGoodBodyGirl {//要有姣好的面孔public void goodLooking();//要有好身材public void niceFigure();}
public interface IGreatTemperamentGirl {//要有氣質public void greatTemperament();}

實現類沒有改變,只是實現類兩個接口,源碼如下:

public class PettyGirl implements IGoodBodyGirl,IGreatTemperamentGirl {private String name;//美女都有名字public PettyGirl(String _name){ this. name=_name; }//臉蛋漂亮public void goodLooking() { System. out.println(this. name + "---臉蛋很漂亮!"); }//氣質要好public void greatTemperament() { System. out.println(this. name + "---氣質非常好!"); }//身材要好public void niceFigure() { System. out.println(this. name + "---身材非常棒!"); }}

通過這樣的改造以后,不管以后是要氣質美女還是要外形美女,都可以保持接口的穩定。當然你可能 要說了,以后可能審美觀點再發生改變,只有臉蛋好看就是美女,那這個 IGoodBody 接口還是要修改的呀, 確實是,但是設計時有限度的,不能無限的考慮未來的變更情況,否則就會陷入設計的泥潭中而不能自拔。 以上把一個臃腫的接口變更為兩個獨立的接口依賴的原則就是接口隔離原則,讓 AbstractSearcher 依 賴兩個專用的接口比依賴一個綜合的接口要靈活。接口是我們設計時對外提供的契約,通過分散定義多個 接口,可以預防未來變更的擴散,提高系統的靈活性和可維護性。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线播放视频| 亚洲男人天堂视频| 2018中文字幕一区二区三区| 久久综合九色九九| 久久99亚洲热视| 日韩小视频在线| 成人午夜在线视频一区| 日韩精品视频中文在线观看| 久久99久久久久久久噜噜| 中文字幕视频一区二区在线有码| 一本一道久久a久久精品逆3p| 日韩中文在线中文网在线观看| 狠狠做深爱婷婷久久综合一区| 久久久久久久久久久亚洲| 欧美另类老女人| 国产欧美久久久久久| 国产日韩在线看| 97av在线视频免费播放| 国a精品视频大全| 亚洲国产日韩欧美在线图片| 精品国产老师黑色丝袜高跟鞋| 日韩在线观看电影| 久久成人人人人精品欧| 亚洲欧美激情精品一区二区| 久久精品中文字幕一区| 91网在线免费观看| 精品久久久久久亚洲精品| 欧美福利视频在线| 亚洲国产欧美日韩精品| 91网站免费观看| 欧美久久精品午夜青青大伊人| xxxxxxxxx欧美| 久久精品久久久久电影| 欧美床上激情在线观看| 久久精品国产亚洲| 国产一区二区欧美日韩| 日韩经典一区二区三区| 中文字幕日韩在线播放| 亚洲欧洲av一区二区| 色综合色综合网色综合| 久久国内精品一国内精品| 亚洲福利在线观看| 国产精品久久久久av免费| 欧美日韩国产中字| 久久好看免费视频| 欧美老女人在线视频| 成人国产精品久久久| 亚洲国产中文字幕在线观看| 日韩av电影手机在线观看| 国产亚洲欧洲高清| 日韩国产高清视频在线| 亚洲欧美制服丝袜| 久久精品中文字幕| 欧美激情videos| 色噜噜国产精品视频一区二区| 日韩欧美综合在线视频| 国产91精品久| 日韩一区二区三区国产| 91精品免费看| 日韩精品福利网站| 国产精品久久久久久久7电影| 欧美成人小视频| 欧美大尺度在线观看| 91视频国产精品| 美女精品视频一区| 久久夜色精品亚洲噜噜国产mv| 亚洲精品自拍偷拍| 国产成人免费91av在线| 成人www视频在线观看| 日本久久中文字幕| 亚洲精品第一国产综合精品| 欧美午夜性色大片在线观看| 国产69精品久久久| 亚洲欧美一区二区三区四区| 91美女片黄在线观| 最近中文字幕2019免费| 91av福利视频| 精品中文字幕在线| 久久久久久久久久久成人| 亚洲成年网站在线观看| 国产精品男女猛烈高潮激情| 午夜精品福利在线观看| 亚洲一区二区三区sesese| 国色天香2019中文字幕在线观看| 久久久久久久久久久久久久久久久久av| 亚洲欧美国产精品专区久久| 国产精品视频网址| 国产美女直播视频一区| 国产精品福利网站| 国产精品九九九| 日韩欧美在线观看| 国产亚洲欧美一区| 国产成人啪精品视频免费网| 亚洲乱码一区av黑人高潮| 欧美孕妇孕交黑巨大网站| 青青草国产精品一区二区| 日本三级久久久| 亚洲大胆人体在线| 国产美女精品免费电影| 国产成人综合精品在线| 欧美特级www| 久久久国产一区| 亚洲激情中文字幕| 欧美日韩中文字幕在线视频| 亚洲最大成人免费视频| 国产亚洲人成a一在线v站| 伦伦影院午夜日韩欧美限制| 欧美限制级电影在线观看| 91久久久久久久| 国产精品a久久久久久| 亚洲精品91美女久久久久久久| 亚洲精品永久免费精品| 亚洲成人激情图| 日韩精品免费在线| 国产欧美日韩丝袜精品一区| 国产精品久久久久999| 国产一区二区三区网站| 成人激情电影一区二区| 国产精品都在这里| 亚洲国产高清自拍| 亚洲国产女人aaa毛片在线| 亚洲国产精品yw在线观看| 国产一级揄自揄精品视频| 另类色图亚洲色图| 欧美激情xxxxx| 亚洲男人天堂2023| 国产成人短视频| 久久91亚洲人成电影网站| 国产视频欧美视频| 国产精品爱久久久久久久| 久久久成人av| 国产精品一区二区三区毛片淫片| 狠狠久久五月精品中文字幕| 久久久久久久97| 久久久久久九九九| 亚洲国产成人精品电影| 国产小视频国产精品| 26uuu久久噜噜噜噜| 亚洲精品黄网在线观看| 国产精品午夜国产小视频| 亚洲人成人99网站| 久久色精品视频| 国产精品久久久久久久久久三级| 国产精品∨欧美精品v日韩精品| 久久久久久久爱| 青青草国产精品一区二区| 疯狂做受xxxx高潮欧美日本| 国产精品福利观看| 一本久久综合亚洲鲁鲁| 欧美成人在线免费视频| 久久国产加勒比精品无码| 中文字幕欧美视频在线| 日韩av免费网站| 欧美在线亚洲一区| 日韩av黄色在线观看| 亚洲少妇激情视频| 日韩在线观看网址| 亚洲电影第1页| 欧美成人一区在线| 91亚洲国产成人久久精品网站| 久久久噜噜噜久久| 亚洲伊人成综合成人网| 国产91精品不卡视频| 亚洲色图狂野欧美|