【精闢】 面向介面設計(Interface Oriented Design)

來源:互聯網
上載者:User

 我在網上搜尋這個概念的時候,發現在中國還很少有此類文章,外國有一本同名書籍出版,但是無緣拜讀。所以這個概念基本是我自己杜撰出來的,只是網上也有同名而已。

       先說說,什麼是介面。這是個老問題,可是在設計之前,必須先將此定義清楚。       一個常見的定義是,介面就是契約。我認為這個定義非常模糊。契約是約定雙方的有一定法律或道德效應的說明。但是,第一,中國人不常定契約,所以不是很能理解其中精髓。第二,此定義還是沒有定義出介面的內容特徵,因此很多人看了這個定義,還是不理解介面。此定義可以是不合國情,不合民意。        我更傾向於將介面定義為職責(或角色、能力)。職責就是在某種情況下被賦予的權力和義務。在社會應用領域中,使用角色的概念更能深入人心。在英文中使用Role單詞。而在普遍意義下,能力大家也能接受。       讓我們打個比方。在物件導向分析中,我們分析出來一個人的對象。在其中,我們假定一個執行個體為韓小明,那麼韓小明這個對象應該實現多少個介面呢?       他在公司上班,需要編寫代碼,因此必須擁有編碼的能力。有時候還要參加設計,因此必須同時擁有設計能力。他有了家庭,必須有對家庭負責的能力。有了妻子,要有作為丈夫的能力。當然了,上面的這些能力也可以理解為角色。軟體工程師、架構師、丈夫、孩子、父親等等。       對於韓小明這樣一個人(對象),他身上同時擁有多個角色,那麼就要實現這麼多介面嗎?那就要看我們的業務領域涉及哪些了。如果我們只關心他的工作情況,那麼也只會涉及軟體工程師和架構師這兩種角色(介面)。        面向介面設計,就在這個時候開始發揮作用了。        在UML設計中,其實也涉及到了,關於介面的設計,那就是Role,只是沒有專門對Role本身進行設計,只是作為一種關係存在而已。方法都轉移到了對象上面。在一定意義上,導致介面的設計被人忽略。       重新捋一下我們在做OOA/OOD的過程,分析出對象,靜態分析出對象的屬性,動態(建模)分析出對象的方法。如果我們將介面的分析和設計過程加入其中,那麼我們的流程就變成:分析出對象,分析出屬性、分析出介面(角色、能力),分析出方法。介面這個集合處於類和方法之間,恰好是一個非常好的分析工具。       至於面向介面設計的一些原則和方法,相信又將是一篇非常精彩的文章。       在我們還沒有被一些新的概念淹沒之前,重新看看我們最基本的軟體設計,我們經常會發現一些意想不到的收穫。面向介面設計如此,其他也是如此。希望這些收穫也能對你有所協助。 原文:http://blog.csdn.net/xiammy/archive/2006/11/25/1413244.aspx附:《Interface Oriented Design》E書
http://www.oebook.com/search.asp?sort=ebook&keyword=Interface+Oriented+Design&language=en&Submit=search

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.