熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java語言深入--什麼叫面向接口編程

2013-11-23 19:00:30  來源: Java核心技術 

  在一個面向對象的系統中系統的各種功能是由許許多多的不同對象協作完成的在這種情況下各個對象內部是如何實現自己的對系統設計人員來講就不那麼重要了;而各個對象之間的協作關系則成為系統設計的關鍵小到不同類之間的通信大到各模塊之間的交互在系統設計之初都是要著重考慮的這也是系統設計的主要工作內容面向接口編程我想就是指按照這種思想來編程吧!實際上在日常工作中你已經按照接口編程了只不過如果你沒有這方面的意識那麼你只是在被動的實現這一思想;表現在頻繁的抱怨別人改的代碼影響了你(接口沒有設計到)表現在某個模塊的改動引起其他模塊的大規模調整(模塊接口沒有很好的設計)等等

  Booch先生那天談到Interaction Designer它就是指做這類設計的人只不過層次更高一些我想目前我們的軟件設計隊伍中這類人是最缺乏的人才之一

  非接口編程?是不是就是面向過程的編程思想?

  關於接口的理解

  接口從更深層次的理解應是定義(規范約束)與實現(名實分離的原則)的分離

  我們在一般實現一個系統的時候通常是將定義與實現合為一體不加分離的我認為最為理解的系統設計規范應是所有的定義與實現分離盡管這可能對系統中的某些情況有點繁煩

  接口的本身反映了系統設計人員對系統的抽象理解

  接口應有兩類第一類是對一個體的抽象它可對應為一個抽象體(abstract class);

  第二類是對一個體某一方面的抽象即形成一個抽象面(interface);

  一個體有可能有多個抽象面

  抽象體與抽象面是有區別的

  設計接口的另一個不可忽視的因素是接口所處的環境(contextenvironment)系統論的觀點環境是系統要素所處的空間與外部影響因素的總和任何接口都是在一定的環境中產生的因此環境的定義及環境的變化對接口的影響是不容忽視的脫離原先的環境所有的接口將失去原有的意義

  按照組件的開發模型(C)它們三者相輔相成各司一面渾然一體缺一不可

  面向對象是指我們考慮問題時以對象為單位考慮它的屬性及方法

  面向過程是指我們考慮問題時以一個具體的流程(事務過程)為單位考慮它的實現

  接口設計與非接口設計是針對復用技術而言的與面向對象(過程)不是一個問題

  我認為UML裡面所說的interface是協議的另一種說法並不是指com的interfaceCORBA的interfaceJava的interfaceDelphi的interface人機界面的interface或NIC的interface

  在具體實現中是可以把UML的interface實現為語言的interface分布式對象環境的interface或其它什麼interface但就理解UML的interface而言指的是系統每部分的實現和實現之間通過interface所確定的協議來共同工作

  所以我認為面向interface編程原意是指面向抽象協議編程實現者在實現時要嚴格按協議來辦也就是Bill Joy同志說的一邊翻rfc一邊寫代碼的意思面向對象編程是指面向抽象和具象抽象和具象是矛盾的統一體不可能只有抽象沒有具象一般懂得抽象的人都明白這個道理 但有的人只知具象卻不知抽象為何物

  所以只有interface沒有實現或只有實現而沒有interface者是沒有用的反OO的

  所以還是老老實實面向對象編程面向協議編程或者什麼都不面向老老實實編程

  但是我很討厭討論這樣的術語不如我們談談什麼叫面向領導的編程?面向用戶的編程?領導和用戶有時都很BT我們就面向BT編程?


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26123.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.