W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
作者:Cay Horstmann
譯者:Xiao Jia(賈梟)
2002 年,我寫(xiě)了一本關(guān)于面向?qū)ο笤O(shè)計(jì)與模式的本科教材 [Hor05]。和很多書(shū)一樣,這本書(shū)也源于我對(duì)經(jīng)典課程的沮喪。一般來(lái)說(shuō),計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的學(xué)生,會(huì)在他們的第一門(mén)編程課上,學(xué)習(xí)如何設(shè)計(jì)一個(gè)獨(dú)立的類(lèi)。而此后,直到在高年級(jí)的軟件工程課中,他們才在面向?qū)ο笤O(shè)計(jì)方面接受更多的訓(xùn)練。在這門(mén)課程中,學(xué)生在幾個(gè)星期內(nèi)匆忙地學(xué)習(xí) UML 和設(shè)計(jì)模式,最終也只是走馬觀花。我寫(xiě)的這本書(shū)是為一個(gè)學(xué)期的課程準(zhǔn)備的,學(xué)生需要具備一些 Java 編程和基本數(shù)據(jù)結(jié)構(gòu)的知識(shí)(通常這些知識(shí)來(lái)自基于 Java 的 CS1 或 CS2 課程安排)。這本書(shū)在學(xué)生所熟悉的上下文中涵蓋了面向?qū)ο笤O(shè)計(jì)原則和設(shè)計(jì)模式的內(nèi)容。比如用 Swing 里面的?JScrollPane
?類(lèi)來(lái)介紹修飾模式(Decorator Pattern),目的是希望這個(gè)例子比經(jīng)典的 Java 流的例子①更容易讓人記住。
① 譯者注:如?
FileInputStream
?和?BufferedInputStream
?等。
Ald02] 和 JUNG ?。然而,這些框架都相當(dāng)復(fù)雜,提供的也只是“用來(lái)繪制圖形”的框架,而不是“用來(lái)繪制圖形的應(yīng)用程序”的框架。
在客戶端 Java 的鼎盛時(shí)期,人們制定了 JavaBeans 規(guī)范,用來(lái)給在可視化 GUI 設(shè)計(jì)環(huán)境里編輯 GUI 組件提供可移植的機(jī)制。其目的是為了讓一個(gè)第三方的 GUI 組件可以放在任意的 GUI 設(shè)計(jì)器中,并且它的屬性可以像按鈕、文本等標(biāo)準(zhǔn)組件一樣進(jìn)行設(shè)置。
Java 語(yǔ)言本身沒(méi)有對(duì)屬性的原生支持。JavaBeans 屬性可以從成對(duì)的 getter 和 setter 方法中發(fā)現(xiàn)出來(lái),或者通過(guò)相應(yīng)的?BeanInfo
?類(lèi)指定。進(jìn)一步地,可以指定?屬性編輯器?來(lái)可視化地編輯屬性的值。JDK 甚至包含了一些基本的屬性編輯器,比如用來(lái)編輯?java.awt.Color
?類(lèi)型的編輯器。
Violet 框架充分利用了 JavaBeans 規(guī)范。比如,CircleNode
?類(lèi)可以通過(guò)提供如下兩個(gè)方法,來(lái)暴露出顏色這一屬性:
public void setColor(Color newValue)
public Color getColor()
現(xiàn)在,不需要任何額外的工作,這個(gè)圖形編輯器就能編輯圓圈節(jié)點(diǎn)的顏色了(參見(jiàn)圖 22.5)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: