日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

6大设计模式(4):接口隔离原则

發布時間:2024/4/15 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6大设计模式(4):接口隔离原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接口隔離原則:

?

接口分兩種:

實例接口:Java中的類

類接口:interface定義的接口

?

原則的兩種定義:

1.client不應該依賴它不須要的接口

2.類間的依賴關系應該建立在最小的接口上

?

須要對接口進行細化。保持清純性。

接口盡量細化,同一時候接口中的方法盡量少,增強專門性。

?

?

接口隔離原則是對接口進行規范約束,包括4層含義:

1.接口要盡量小

這是原則的核心定義。可是小也是有限度的,不能違反單一 職責原則。

2.接口要高內聚

什么是高內聚?就是提高類、接口的處理能力。降低對外的交互。

類提供一個方法。你僅僅須要知道調用這種方法就能夠實現一系列的功能,可是詳細是如何實現的就不知道了。詳細到接口隔離原則就是在接口中盡量少的發布public方法。

3.定制服務

單獨為當中的某一模塊抽象成一個接口。

4.接口的設計是有限的

需求總是在變化的。

?

用書中的樣例“星探尋找美女”來進一步理解上述四個含義。

首先得有一個美女的接口和星探的抽象接口:

interface IPrettyGirl {// 長得好看public void goodLooking();// 身材好public void niceFigure();// 有氣質public void greatTemperament(); }abstract class AbstractSearcher {protected IPrettyGirl prettyGirl;public AbstractSearcher(IPrettyGirl prettyGirl) {this.prettyGirl = prettyGirl;}public abstract void show(); }


?

實現美女類和星探類:

?

class PrettyGirl implements IPrettyGirl {private String name;public PrettyGirl(String name) {this.name = name;}@Overridepublic void goodLooking() {System.out.println(name + "--->臉蛋非常美麗");}@Overridepublic void niceFigure() {System.out.println(name + "--->身材非常好");}@Overridepublic void greatTemperament() {System.out.println(name + "--->氣質好");}}class Searcher extends AbstractSearcher {public Searcher(IPrettyGirl prettyGirl) {super(prettyGirl);}@Overridepublic void show() {System.out.println("-----美女信息例如以下-----");// 展示面容super.prettyGirl.goodLooking();// 展示身材super.prettyGirl.niceFigure();// 展示氣質super.prettyGirl.greatTemperament();}}


?

場景類:

?

public class Client {public static void main(String[] args) {IPrettyGirl girl = new PrettyGirl("圓圓");AbstractSearcher searcher = new Searcher(girl);searcher.show();} }


?

可是美女并不一定都是滿足長得美麗、身材好、有氣質這三個條件。僅僅滿足當中一個也能夠算是一個“美女”。僅僅只是不是那么完美罷了。比方說。背影殺手。

?

那么詳細到這個程序我們應該怎么去實現呢?PrettyGirl實現IPrettyGirl接口里的所有方法,所以僅僅能對IPrettyGirl接口進行拆分、細化。拆分成兩個或幾個接口。這個視需求而定。

如果我們將美女分為氣質型美女和外形美的美女,這樣就是兩個接口。外形美女也能夠分成?(臉)長得美麗的美女和身材好的美女。這樣就是拆分成三個接口。各自是:IGoodLookingGirl、INiceFigureGirl、IGreatTemperamentGirl。

?

美女的接口及實現類:

?

interface IGoodLookingGirl {public void goodLooking(); }interface INiceFigureGirl {public void niceFigure(); }interface IGreatTemperamentGirl {public void greatTemperament(); }// 長得好看的美女 class GoodLookingGirl implements IGoodLookingGirl {private String name;public GoodLookingGirl(String name) {this.name = name;}@Overridepublic void goodLooking() {System.out.println(name + "--->臉蛋非常美麗");} }// 身材好的美女 class NiceFigureGirl implements INiceFigureGirl {private String name;public NiceFigureGirl(String name) {this.name = name;}@Overridepublic void niceFigure() {System.out.println(name + "--->身材好");}}// 有氣質的美女 class GreatTemperamentGirl implements IGreatTemperamentGirl {private String name;public GreatTemperamentGirl(String name) {this.name = name;}@Overridepublic void greatTemperament() {System.out.println(name + "--->有氣質");}}// 完美 class PrettyGirl implements IGoodLookingGirl, INiceFigureGirl,IGreatTemperamentGirl {private String name;public PrettyGirl(String name) {this.name = name;}@Overridepublic void greatTemperament() {System.out.println(name + "--->有氣質");}@Overridepublic void niceFigure() {System.out.println(name + "--->身材好");}@Overridepublic void goodLooking() {System.out.println(name + "--->臉蛋非常美麗");}}

星探的接口及實現類:

?

abstract class AbstractSearcher {protected PrettyGirl prettyGirl;protected GoodLookingGirl goodLookingGirl;protected GreatTemperamentGirl greatTemperamentGirl;protected NiceFigureGirl niceFigureGirl;public AbstractSearcher(PrettyGirl prettyGirl) {this.prettyGirl = prettyGirl;}public AbstractSearcher(IGoodLookingGirl goodLookingGirl) {this.goodLookingGirl = (GoodLookingGirl) goodLookingGirl;}public AbstractSearcher(IGreatTemperamentGirl greatTemperamentGirl) {this.greatTemperamentGirl = (GreatTemperamentGirl) greatTemperamentGirl;}public AbstractSearcher(INiceFigureGirl niceFigureGirl) {this.niceFigureGirl = (NiceFigureGirl) niceFigureGirl;}public abstract void showPrettyGirl();public abstract void showGoodLookingGirl();public abstract void showNiceFigureGirl();public abstract void showGreatTemperamentGirl(); }class Searcher extends AbstractSearcher {public Searcher(IGoodLookingGirl goodLookingGirl) {super(goodLookingGirl);}public Searcher(INiceFigureGirl niceFigureGirl) {super(niceFigureGirl);}public Searcher(IGreatTemperamentGirl temperamentGirl) {super(temperamentGirl);}public Searcher(PrettyGirl prettyGirl) {super(prettyGirl);}@Overridepublic void showPrettyGirl() {super.prettyGirl.goodLooking();super.prettyGirl.niceFigure();super.prettyGirl.greatTemperament();}@Overridepublic void showGoodLookingGirl() {super.goodLookingGirl.goodLooking();}@Overridepublic void showNiceFigureGirl() {super.niceFigureGirl.niceFigure();}@Overridepublic void showGreatTemperamentGirl() {super.greatTemperamentGirl.greatTemperament();}}


?

場景類:

?

?

public class Client {public static void main(String[] args) {IGoodLookingGirl goodLookingGirl = new GoodLookingGirl("冰冰");INiceFigureGirl niceFigureGirl = new NiceFigureGirl("圓圓");IGreatTemperamentGirl greatTemperamentGirl = new GreatTemperamentGirl("芳芳");PrettyGirl prettyGirl = new PrettyGirl("張三");AbstractSearcher goodlookingGirlsearcher = new Searcher(goodLookingGirl);AbstractSearcher niceFigureGirlSearcher = new Searcher(niceFigureGirl);AbstractSearcher greatTemperamentGirlSearcher = new Searcher(greatTemperamentGirl);AbstractSearcher prettyGirlSearcher = new Searcher(prettyGirl);goodlookingGirlsearcher.showGoodLookingGirl();niceFigureGirlSearcher.showNiceFigureGirl();greatTemperamentGirlSearcher.showGreatTemperamentGirl();prettyGirlSearcher.showPrettyGirl();} }


?

執行結果:

冰冰--->臉蛋非常美麗
圓圓--->身材好
芳芳--->有氣質
張三--->臉蛋非常美麗
張三--->身材好
張三--->有氣質

?

?

?

寫完之后本人就懵了,事實上寫的過程中就已經懵了,越寫越認為理解的有問題。怎么會這么麻煩。

。。

?

?

?

轉載于:https://www.cnblogs.com/mfrbuaa/p/5367209.html

總結

以上是生活随笔為你收集整理的6大设计模式(4):接口隔离原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。