成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

設計模式6大原則:接口隔離原則

開發 后端
接口隔離原則要求的是在一個模塊應該只依賴它需要的接口,以保證接口的小純潔。而且需要保證接口應該盡量小,即設計接口的時候應該讓接口盡量細化,不要定義太臃腫的接口(比如接口中有很多不相干的邏輯的方法聲明)。

首先看看接口隔離原則的定義,有兩種定義

第一種: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.(類間的依賴關系應該建立在最小的接口上)

而這里的接口,卻不僅僅指的是通過interface關鍵字定義的接口,接口分為2種:

1、對象接口(Object Interface)

JAVA中聲明的一個類,通過new關鍵字產生的一個實例,它是對一個類型的事物的描述,這也是一種接口。例如:

Phone phone = new Phone();這里的類Person就是實例phone的一個接口

2、類接口(Class Interface)

這種接口就是通過interface關鍵字定義的接口了

 

也就是說,接口隔離原則要求的是在一個模塊應該只依賴它需要的接口,以保證接口的小純潔。而且需要保證接口應該盡量小,即設計接口的時候應該讓接口盡量細化,不要定義太臃腫的接口(比如接口中有很多不相干的邏輯的方法聲明)。

接口隔離原則與單一職責原則有些相似,不過不同在于:單一職責原則要求的是類和接口職責單一,注重的是職責,是業務邏輯上的劃分。而接口隔離原則要求的是接口的方法盡量少,盡量有用(針對一個模塊)

在使用接口隔離原則的時候需要有一些規范:

1.接口盡量小

接口盡量小主要是為了保證一個接口只服務一個子模塊或者業務邏輯

2.接口高內聚

接口高內聚是對內高度依賴,對外盡可能隔離。即一個接口內部的聲明的方法相互之間都與某一個子模塊相關,且是這個子模塊必須的。

3.接口設計是有限度的

但是如果完全遵循接口隔離原則的話,會出現一個問題。即接口的設計力度會越來越小,這樣就造成了接口數量劇增,系統復雜度一下子增加了,而這不是真實項目所需要的,所以在使用這個原則的時候還要在特定的項目,根據經驗或者嘗試判斷,不過沒有一個固定的標準。

舉個例子

在春熙路上逛街,到處都是女的,有穿著絲襪的大媽(惡心一下),有文靜的女生,有性感的辣妹,總之很多女的。然而當你對前面喊一聲“美女,錢掉了”,估計前面連同大媽一起回頭看看,以為在叫自己。如今美女這個詞已經變得大眾化了,反正跟女的打招呼就說美女。但是真正的美女是這樣嗎,男淫們心中的美女應該是這樣的:身材好、長相好、氣質佳。

IPrettyGirl.java:定義美女標準

  1. //定義美女接口  
  2. public interface IPrettyGirl {  
  3.     //長相好  
  4.     public void greatLooks();  
  5.     //好身材  
  6.     public void greatFigure();  
  7.     //氣質佳  
  8.     public void greatTemperament();  

PrettyGril.java:實現美女類

  1. public class PrettyGirl implements IPrettyGirl {  
  2.     private String name;  
  3.     //構造函數,美女名字  
  4.     public PrettyGirl(String name)  
  5.     {  
  6.         this.name = name;  
  7.     }  
  8.     //好身材  
  9.     @Override 
  10.     public void greatFigure() {  
  11.         System.out.println(name+":身材非常好");  
  12.     }  
  13.     //好長相  
  14.     @Override 
  15.     public void greatLooks() {  
  16.         System.out.println(name+":長相非常好");  
  17.     }  
  18.     //好氣質  
  19.     @Override 
  20.     public void greatTemperament() {  
  21.         System.out.println(name+":氣質非常好");  
  22.     }  
  23.    

AMan:是個抽象類,抽象出一個男人來

  1. public abstract class AMan {  
  2.     protected IPrettyGirl prettyGirl;  
  3.     public AMan(IPrettyGirl prettyGirl)  
  4.     {  
  5.         this.prettyGirl = prettyGirl;  
  6.     }  
  7.        
  8.     //帥哥開始找美女啦  
  9.     public abstract void findGirl();  

Man:

  1. public class Man extends AMan {  
  2.    
  3.     public Man(IPrettyGirl prettyGirl) {  
  4.         super(prettyGirl);  
  5.     }  
  6.    
  7.     @Override 
  8.     public void findGirl() {  
  9.         System.out.println("美女在這里:----------------------");  
  10.         super.prettyGirl.greatLooks();  
  11.         super.prettyGirl.greatFigure();  
  12.         super.prettyGirl.greatTemperament();  
  13.            
  14.     }  
  15.    

場景類,春熙路,帥哥開始尋找美女了

  1. public class ChunxiRoad {  
  2.     public static void main(String args[])  
  3.     {  
  4.         IPrettyGirl jiajia = new PrettyGirl("佳佳");  
  5.         AMan man = new Man(jiajia);  
  6.         man.findGirl();  
  7.     }  

運行結果:

美女在這里:---------------------- 
佳佳:長相非常好
佳佳:身材非常好
佳佳:氣質非常好

但是這里有個問題,接口劃分的不是很清晰,比如有些男人認為某些女生長相好,身材好就是美女(而不管這個女的素質啥樣,比如那些“壓脈帶”)。而某些女生雖然長相一般,身材也一般,但是氣質很好,這就是某些宅男心目中的氣質型美女,或者三者具備。所以需要把接口劃分的再細一點以滿足不同男人的審美觀。

我們把接口分為兩種:

好身材

  1. public interface IGreatBody {  
  2.     //好長相  
  3.     public void greatLooks();  
  4.     //身材  
  5.     public void greatFigure();  

好氣質

  1. public interface IGreatTemperament {  
  2.     //氣質好  
  3.     public void greatTemperament();  

然后我們就可以根據自己的需求來尋找自己心目中認為的美女啦,舉個例子

上面的AMan和Man傳遞的接口變為IGreatBody

接下來,我們來到了--東京。看到了cang老師

  1. public class Tokyo {  
  2.     public static void main(String args[])  
  3.     {  
  4.         IGreatBody canglaoshi = new PrettyGirl("cang老師");  
  5.         AMan man = new Man(canglaoshi);  
  6.         man.findGirl();  
  7.     }  

運行結果:

美女在這里:---------------------- 
cang老師:長相非常好 
cang老師:身材非常好 

 原文鏈接:http://www.cnblogs.com/loulijun/archive/2012/03/07/2382247.html

【編輯推薦】

  1. 設計模式6大原則:依賴倒置原則
  2. 關于讀寫鎖算法的Java實現及思考
  3. 6個提高Java開發者效率的工具
  4. Java并發:juc Executor框架詳解
  5. 設計Java應用程序的平滑停止
責任編輯:林師授 來源: 婁立軍的博客
相關推薦

2012-03-15 11:15:13

Java設計模式

2012-03-05 13:58:34

設計模式里氏置換

2012-03-07 10:40:19

Java設計模式

2012-03-08 10:57:00

Java設計模式

2012-03-12 16:10:26

Java設計模式

2011-09-07 09:21:01

設計模式

2015-09-23 17:12:18

API設計原則

2015-09-24 08:52:53

API設計原則

2010-05-07 17:59:05

Unix服務器

2021-07-29 14:42:55

設計模式Java

2010-09-09 13:54:06

DIV CSS

2010-03-31 17:26:52

SaaS

2024-10-14 09:52:39

軟件項目開發軟件項目估算

2020-09-18 11:25:43

智能

2011-07-19 18:13:15

高效數據庫

2020-06-09 07:00:00

面向對象編程編程原則

2012-02-01 13:24:37

2010-09-14 13:49:38

CSS代碼

2010-08-16 13:35:21

數據庫設計

2011-06-29 15:44:19

SEO
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲精品久久久优势 | 午夜视频一区二区 | 国产精品毛片无码 | 国产又爽又黄的视频 | 91中文字幕 | 欧美嘿咻 | 日韩欧美中文字幕在线视频 | 亚洲图片一区二区三区 | 日本中文在线视频 | 中文字幕视频在线免费 | 在线看片国产 | 在线久草| 欧美一区不卡 | 欧美xxxx色视频在线观看免费 | 成人 在线| 国产一区二区在线观看视频 | 日本在线小视频 | 日韩精品成人一区二区三区视频 | 亚洲精品福利在线 | 欧美成人不卡 | 亚洲一区二区三区在线播放 | 91视频麻豆| 看羞羞视频免费 | 一区二区福利视频 | 久久伊人一区 | 亚洲精品久久久久久一区二区 | 成人免费网站www网站高清 | 欧美在线a| 欧美国产亚洲一区二区 | 国产精品国产三级国产aⅴ中文 | 999免费网站 | 国产精品亚洲一区二区三区在线 | av一二三区 | av黄色在线 | www久久| 精品欧美一区二区久久久伦 | 日韩在线观看网站 | 欧美精品电影一区 | 欧美操操操 | 免费成人高清在线视频 | 99久热在线精品视频观看 |