離弦之Ray

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

          #

           

          Decorator Pattern其實(shí)早就接觸過了,從java的輸入語句中可見一斑InputStream in = new BufferedInputStream(new FileInputStream(“test.txt”)); 其中BufferedInputStream FileInputStream 都是InputStream的子類,通過包含關(guān)系,讓外圍的類包含內(nèi)部那個(gè)類的功能及數(shù)據(jù),說的形象一點(diǎn),就是在內(nèi)部那個(gè)類外面加了一層裝飾。這也是裝飾模型最核心的概念。

          Factory Pattern

          書中舉了匹薩店的例子,一開始的類,將制作不同類型匹薩的方法都包含在里面,整個(gè)類顯得很冗余。順著正常的思路,將制作匹薩的方法從這個(gè)類里面剝離出去單獨(dú)形成一個(gè)類,這個(gè)類就像生產(chǎn)對(duì)象的工廠,只要你告訴它該生產(chǎn)的產(chǎn)品的型號(hào),它就生產(chǎn)對(duì)應(yīng)的對(duì)象再發(fā)送給客戶。

          按照書中的例子,如果匹薩店開在同一個(gè)城市以內(nèi),匹薩的風(fēng)味多樣,那么上述的模式很好地實(shí)現(xiàn)了上面的功能。但如果是連鎖店,每個(gè)地方的風(fēng)味不同呢?……

          是的,每個(gè)地方的風(fēng)味不同,但同一個(gè)地方不同匹薩的種類卻相當(dāng)有限。也就是說可以有一個(gè)匹薩店父類,然后各地的分店是這個(gè)父類的子類。而其中最重要的制作匹薩的方法在父類中被聲明為虛函數(shù),由各個(gè)具體的子類來實(shí)現(xiàn)。這樣“工廠”又被搬回具體的類中間。

          具體如何使用,我個(gè)人覺得是要看情況的。上面兩個(gè)是工廠模式的兩種表現(xiàn)形式。

              對(duì)于后一種模式,里面用到的對(duì)象,比如例子中匹薩的原材料,同樣可以用工廠模式來實(shí)現(xiàn),這樣程序的結(jié)構(gòu)就相當(dāng)靈活了。

          posted @ 2007-09-10 23:21 離弦之ray的技術(shù)天空 閱讀(237) | 評(píng)論 (0)編輯 收藏

           

                 這是Head First Design Pattern里面介紹的第二個(gè)Pattern,叫做Observer Pattern,其核心概念就是一種一對(duì)多的關(guān)系。

          其中的“一”,類似于定報(bào)紙系統(tǒng)的發(fā)送方,而“多”就是訂閱方。當(dāng)有新的“報(bào)紙”時(shí),發(fā)送方將最新的報(bào)紙送達(dá)訂閱方手中。發(fā)送方維護(hù)著一個(gè)訂閱方的列表。

          文中通過一個(gè)氣象站的例子來解說這個(gè)模式。WeatherData實(shí)現(xiàn)Subject接口,里面包括所要傳送的private 數(shù)據(jù),還有注冊Observer和去除Observer的方法。當(dāng)數(shù)據(jù)有所更新時(shí)調(diào)用measurementChanged方法,這個(gè)方法再調(diào)用notifyObservers方法。

          而在Observer那端,有一個(gè)subject對(duì)象的私有數(shù)據(jù),通過構(gòu)造函數(shù)將要注冊的Subject作為參數(shù)來對(duì)它進(jìn)行初始化,以此建立ObserverSubject的聯(lián)系。

          最后還介紹了java那建的Observer模式。通過繼承Observable來成為Subject,通過實(shí)現(xiàn)Observer接口來成為Observer。但其有一定弊病,因?yàn)?/span>java不支持多繼承,這就限制了使用這個(gè)模式的靈活性。所以我覺得以后如果真的用到Observer模式還是自己編程比較好。

          posted @ 2007-09-06 13:26 離弦之ray的技術(shù)天空 閱讀(184) | 評(píng)論 (0)編輯 收藏

          ??? 好久沒進(jìn)入linux系統(tǒng)了,今天心血來潮,一進(jìn)去,想玩一下更新系統(tǒng)。然后就從想用那個(gè)圖形界面的更新程序。可惜阿,點(diǎn)上去都說有一個(gè)程序正在讀取軟件信息。于是重啟,但還是如此。
          ??? 突然報(bào)出有240個(gè)軟件包可以更新,原來是自動(dòng)更新在作怪。

          ??? 然后就順理成章地點(diǎn)吧,還挺順利,它就開始更新了。但更新著就在那不動(dòng)了,奇慢無比。

          ??? 在老婆的指導(dǎo)下,我上網(wǎng)查了一下yum的用法。

          ??? 打開終端。
          ??? 首先使用yum list來查看更新列表,刷的一下出來好多。
          ??? 然后使用yum update,它會(huì)檢查每個(gè)要更新的軟件包的頭,得到一些信息,包括軟件包的大小等等。

          ??? 會(huì)計(jì)算出總的要下載的大小,問你是否要下載。
          ??? 乖乖,一共590m, 我選擇了y,開始下載……

          ??? 漫長的等待。
          ??? 然后會(huì)提示你,你再選擇y確定一下就好。
          ??? 弄完后半死,重啟一下后一切正常。

          ??? 但重啟時(shí)發(fā)現(xiàn),啟動(dòng)時(shí)選擇系統(tǒng)的時(shí)候linux有了兩個(gè)選項(xiàng),只有版本信息的微小差異。倒是不影響你選擇進(jìn)入linux
          ??? 就是看得不是很爽。于是上網(wǎng)搜索了一下,知道這個(gè)信息由 文件系統(tǒng)/boot/grub/grub.conf來決定。
          ??? 于是研究了一下它,刪掉了那個(gè)版本比較舊的選項(xiàng),再把默認(rèn)啟動(dòng)系統(tǒng)改為default = 1 (因?yàn)楝F(xiàn)在是兩個(gè)從0開始編號(hào),windows是1,一開始三個(gè)的時(shí)候,windows是2)

          ???? 至此,更新徹底完成!
          posted @ 2007-02-15 01:43 離弦之ray的技術(shù)天空 閱讀(290) | 評(píng)論 (0)編輯 收藏

          ??? 考研歸來,不甚理想,等成績中。
          posted @ 2007-02-14 22:13 離弦之ray的技術(shù)天空 閱讀(208) | 評(píng)論 (1)編輯 收藏

          復(fù)習(xí)考研中…… 這里就暫不耕耘了……
          posted @ 2006-10-14 10:28 離弦之ray的技術(shù)天空 閱讀(105) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 成安县| 繁峙县| 靖州| 辽宁省| 淄博市| 玉环县| 舞钢市| 齐河县| 犍为县| 特克斯县| 望都县| 张家港市| 淳化县| 西青区| 工布江达县| 松原市| 南溪县| 南平市| 哈巴河县| 新丰县| 侯马市| 廉江市| 湟源县| 西平县| 康保县| 宿迁市| 始兴县| 瓮安县| 馆陶县| 邢台县| 嘉定区| 盱眙县| 自治县| 特克斯县| 饶阳县| 台东县| 兴义市| 温宿县| 班玛县| 章丘市| 永定县|