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

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

怎樣設計合適的接口

2019-11-18 15:44:57
字體:
來源:轉載
供稿:網友

本文轉自IBM Developerworks中國網站
摘要:我們在設計系統接口時,經常會碰到這樣的問題:

  1、我們的接口應該提供多少方法才合適?

  2、我們的接口應該提供"原子方法"還是"復合方法"?

  3、我們的接口是否應該封裝(或者,能否封裝)所有的細節?

  接口的設計需要考慮用戶的使用習慣、使用的方便程度、使用的安全程度,根據我的編程經驗,下面會具體討論接口設計的2個需要權衡的方面:接口的單一化 & 復合化。

  接口

  接口提供了不同系統之間或者系統不同組件之間的界定。在軟件中,接口提供了一個屏障,從而從實現中分離目標,從具體中分離抽象,從作者中分離用戶。

  站在用戶的角度看,一個接口建立并命名了一個目標對象的使用方法。一些約束(例如:編譯時的類型系統、運行時的異常機制及返回值)使得類作者的目的得以體現和加強。供給(affordances)指事物的被感知的真實的屬性,這些屬性可以決定事物使用的可能方法,供給提供了對事物操作的線索。

  類設計者的一個職責便是在接口中減小約束與供給之間的隔閡、匹配目標以及一定程度上的自由度,盡可能減小錯誤使用目標對象的可能。

  封裝

  對于封裝來說,遠不止數據私有那么簡單。在設計中,封裝往往會涉及到自我包含(self-containment)。假如一個類需要你知道如何調用它方法(e.g. 在一個線程的環境中,在一個方法調用后調用另一個方法,你必須明確地同步對象),那么它的封裝性就不如將所有這些全部包含并隱藏的類(e.g. 這個類是thread-safe的)好。前一個設計存在著設計的漏洞,它的許多限定條件是模糊的,而且把部分責任推給了用戶,而不是讓類提供者做這些工作來完成類的設計。

  在空間或者時間上分離方法的執行(例如,線程,遠程方法調用,消息隊列),能夠對設計的正確性和效率產生意義深遠的影響。這種分離帶來的結果是不可忽視的:
  1. 并發引入了不確定性和環境(context)選擇的開銷;
  2. 分布引入了回調的開銷,這些開銷可能不斷增加,而且會導致錯誤。
  這些是設計的問題,修改它們可不是象修改bug那樣簡單。

  假如一個接口主要由存取方法(set和get方法)組成,每個方法都相應的直接指向某個私有域,那么它的封裝性會很差。接口中的域存取方法通常是不會提供信息的:他們在對象的使用中不能通訊、簡單化和抽象化,這通常會導致代碼冗長,并且輕易出錯。

  所以,我們首先考慮接口設計的第一個原則:

  命令與查詢分離(Command-Query Separation)
  要求:保證一個方法不是命令(Command)就是查詢(Query)

定義:
  查詢:當一個方法返回一個值往返應一個問題的時候,它就具有查詢的性質;
  命令:當一個方法要改變對象的狀態的時候,它就具有命令的性質;

  通常,一個方法可能是純的Command模式或者是純的Query模式,或者是兩者的混合體。在設計接口時,假如可能,應該盡量使接口單一化,保證方法的行為嚴格的是命令或者是查詢,這樣查詢方法不會改變對象的狀態,沒有副作用(side effects),而會改變對象的狀態的方法不可能有返回值。也就是說:假如我們要問一個問題,那么就不應該影響到它的答案。實際應用,要視具體情況而定,語義的清楚性和使用的簡單性之間需要權衡。

  例如,在java.util.Iterator中,hasNext可以被看作一種查詢,remove是一種命令,next合并了命令和查詢:
public interface Iterator{boolean hasNext();Object next();void remove();}

  這里,假如不將一個Iterator對象的當前值向前到下一個的話,就不能夠查詢一個Iterator對象。假如沒有提供一個復合方法next,我們將需要定義一系列的命令方法,例如:初始化(initialization)、繼續(continuation)、訪問(access)和前進(advance),它們雖然清楚定義了每個動作,但是,客戶代碼過于復雜:
for(initialization; continuation condition; advance){

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲国产日韩2020| 国产日韩精品在线观看| 欧美自拍大量在线观看| 亚洲毛片一区二区| 欧美xxxwww| 亚洲午夜色婷婷在线| 成人免费视频网址| 亚洲丁香久久久| 国产伊人精品在线| 日韩欧美在线中文字幕| 亚洲精选中文字幕| 欧美黑人视频一区| 久久理论片午夜琪琪电影网| 亚洲精品中文字幕有码专区| 日本精品一区二区三区在线播放视频| 亚洲自拍偷拍一区| 国产精品黄页免费高清在线观看| 精品国产1区2区| 欧美人在线观看| 欧美午夜视频一区二区| 亚洲精品色婷婷福利天堂| 欧美情侣性视频| 国产成人精品久久亚洲高清不卡| 国产精品美女主播在线观看纯欲| 日本精品久久电影| 亚洲免费高清视频| 国产日韩av在线播放| 久久综合国产精品台湾中文娱乐网| 亚洲人av在线影院| 日韩电影中文 亚洲精品乱码| 91精品国产色综合久久不卡98口| 一本一本久久a久久精品牛牛影视| 欧美大胆a视频| 国产精品美女视频网站| 日韩欧美精品网址| 91精品久久久久久久久久久久久| 国产精品观看在线亚洲人成网| 久久国产精品久久久久久| 欧洲成人在线观看| 成人网在线免费观看| 精品国产依人香蕉在线精品| 日韩免费在线电影| 丝袜情趣国产精品| 国产精品美女午夜av| 亚洲欧美日本伦理| 成人中心免费视频| 亚洲区一区二区| 亚洲经典中文字幕| 91免费国产视频| 久久久久久久久国产| 一本大道香蕉久在线播放29| 不卡av电影在线观看| 国产欧美在线观看| 亚洲精品一区中文字幕乱码| 色综合久久中文字幕综合网小说| 一区国产精品视频| 久久精品色欧美aⅴ一区二区| 午夜精品久久久99热福利| 色婷婷av一区二区三区在线观看| 亚洲欧美综合精品久久成人| 黑人巨大精品欧美一区二区免费| 91中文在线观看| 久久久亚洲精品视频| 日韩av在线电影网| 日韩精品中文字幕在线| 欧美交受高潮1| 日韩精品中文字幕在线观看| 国产日韩在线亚洲字幕中文| 欧美极品少妇全裸体| 国产91|九色| 亚洲国产精品一区二区三区| 日韩中文字幕网| 欧美在线观看视频| 久久久成人精品| 欧美国产日本在线| 日韩av电影在线播放| 欧美激情a∨在线视频播放| 亚洲第一精品夜夜躁人人爽| 亚洲一区二区久久| 91中文在线观看| 久久久久久中文字幕| 亚洲国产91精品在线观看| 日韩av理论片| 色综合伊人色综合网站| 国产精品成人观看视频国产奇米| 亚洲一区亚洲二区| 亚洲色图在线观看| 欧美大片免费观看| 国产精品777| 精品久久久国产精品999| 97国产真实伦对白精彩视频8| 欧美日韩加勒比精品一区| 欧美日韩国产123| 久久国产精彩视频| 欧美野外猛男的大粗鳮| 午夜精品久久久久久久白皮肤| 日韩中文字幕久久| 国产一区二区三区高清在线观看| 欧美日韩在线观看视频| 国产日韩欧美在线| 国产丝袜一区二区| 九九热精品在线| 最近2019年中文视频免费在线观看| 亚州欧美日韩中文视频| 日韩欧美成人区| 91影视免费在线观看| 97国产真实伦对白精彩视频8| 亚洲直播在线一区| 国产91久久婷婷一区二区| 午夜精品视频在线| 亚洲网站在线看| 久久久久久久久爱| 亚洲欧洲在线观看| 久久久中精品2020中文| 久久久久久久久国产精品| 日本国产欧美一区二区三区| www国产91| 久久久久在线观看| 国产精品久久不能| 日韩中文字幕免费看| 一本大道亚洲视频| 国产精品永久免费视频| 国产日韩在线亚洲字幕中文| 亚洲精品中文字幕有码专区| 奇门遁甲1982国语版免费观看高清| 日韩欧美在线观看视频| 日本久久亚洲电影| 中文字幕久热精品在线视频| 国产精品久久久久久久一区探花| 欧美第一黄网免费网站| 国产91精品最新在线播放| 久久九九精品99国产精品| 久久久精品一区二区三区| 国产精品久久久久久久天堂| 川上优av一区二区线观看| 美女黄色丝袜一区| 国产成人福利夜色影视| 欧美精品999| 成人网在线免费看| 久久久国产精品视频| 久久露脸国产精品| 欧美亚州一区二区三区| 欧美黄色小视频| 国产精品成av人在线视午夜片| 国产精品观看在线亚洲人成网| 精品夜色国产国偷在线| 欧美日韩国产一区二区三区| 亚洲一区免费网站| 亚洲精品乱码久久久久久按摩观| 久久久国产成人精品| 成人国内精品久久久久一区| 欧美成人精品xxx| 波霸ol色综合久久| 国产日本欧美视频| 成人激情视频在线观看| 国产日韩在线一区| 亚洲人在线视频| 丝袜一区二区三区| 亚洲欧美日韩爽爽影院| 亚洲精品国产精品乱码不99按摩| 亚洲精品国产综合区久久久久久久| 欧美一区视频在线| 川上优av一区二区线观看| 午夜精品福利视频|