編程概念

發表於2008年08月02日 12:45 閱讀(6) 評論(0)

 

1.       封裝
封裝是面向對象的一個重要特點。它防止外界未被授權地訪問一些信息和功能。從而使對象成爲一個黑盒子,讓使用對象的人不用(也沒有辦法)瞭解對象內部的工作情況。於是,類的設計者可以設計一個清晰的接口並且將實現和接口分離,也由於有了封裝,用戶就只能使用接口而不能接觸到具體的實現。
2.多態
多態是面向對象有力的武器之一,它允許客戶對一個對象進行一個操作,但是具體的動作卻取決於對象的類型。
3.接口
多態可以是基於繼承的,還有另一種機制實現多態,就是接口。接口讓程序員能夠對對象的定義與實現分離,從而可以在不破壞現有應用程序的情況下使對象得以發展完善。
接口描述屬性和方法的方式與類相似,但與類不同,接口不能提供任何實現。多個接口具有允許軟件組件的系統不斷髮展而不破壞現有代碼的優點。
  Java一個類只可以從一個類派生,但是卻可以實現多個接口。

定義了
Abstract class Cshape
之後有有一些類繼承自它 Circle,Trangle,

現在希望知道一個形狀的周長時,需要添加 Perimeter(周長)屬性和 PrintPerimeter()方法。

如果整個代碼都在自己的控制中,當然可以直接對cshape類作出修改,並且也可以修改
其餘的派生類。但是一個類庫往往是由別人編譯發行的,客戶根本無法見到代碼,即使有代碼,也可能不希望直接修改它,以免造成一些意外的問題。這個時候,比較好的做法就是增加一個接口,然後從原有的類派生一些類來實現這個接口。

//?如何知道D類的名字?像down下的jdbc實現jar包可以看到全部代碼,又怎樣?

//////////////////////////////////////////////////////////////////////////////
1.委託
委託模式是軟件設計模式中的一項基本技巧。在委託模式中,有兩個對象參與處理同一個請求,接受請求的對象將請求委託給另一個對象來處理。委託模式是一項基本技巧,許多其他的模式,如狀態模式、策略模式、訪問者模式本質上是在更特殊的場合採用了委託模式。委託模式使得我們可以用聚合來替代繼承,它還使我們可以模擬mixin。
“委託”在C#中是一個語言級特性,而在Java語言中沒有直接的對應,但是我們可以通過動態代理來實現委託!代碼如下:
//     http://www.javaeye.com/topic/29541

2.事件
//    http://hbohuan.blog.163.com/blog/static/208489820077132225530/

3.回調

回調概念:
軟件模塊之間總是存在着一定的接口,從調用方式上,可以把他們分爲三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。回調和異步調用的關係非常緊密,通常我們使用回調來實現異步消息的註冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎。
java實現回調:
在 Java 支持方法指針之前,Java 接口不能提供一種實現回調的好方法。如果您習慣於傳遞在事件驅動編程模型中調用的函數指針,則您會喜歡本技巧。 熟悉 MS-Windows 和 X Window System 事件驅動編程模型的開發人員,習慣於傳遞在某種事件發生時調用(即“回調”)的函數指針。Java 的面向對象模型目前並不支持方法指針,這樣似乎就不可能使用這種很好的機制。但我們並不是一點辦法都沒有!
Java 的接口支持提供了一種獲得回調的等價功能的機制。其技巧就是:定義一個簡單接口,並在該接口中聲明我們要調用的方法。
//    http://www.cublog.cn/u/25102/showart_327024.html
//    http://kidult.javaeye.com/blog/148982
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章