離弦之Ray

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

          #

           

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

          Factory Pattern

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

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

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

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

              對于后一種模式,里面用到的對象,比如例子中匹薩的原材料,同樣可以用工廠模式來實現,這樣程序的結構就相當靈活了。

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

           

                 這是Head First Design Pattern里面介紹的第二個Pattern,叫做Observer Pattern,其核心概念就是一種一對多的關系。

          其中的“一”,類似于定報紙系統的發送方,而“多”就是訂閱方。當有新的“報紙”時,發送方將最新的報紙送達訂閱方手中。發送方維護著一個訂閱方的列表。

          文中通過一個氣象站的例子來解說這個模式。WeatherData實現Subject接口,里面包括所要傳送的private 數據,還有注冊Observer和去除Observer的方法。當數據有所更新時調用measurementChanged方法,這個方法再調用notifyObservers方法。

          而在Observer那端,有一個subject對象的私有數據,通過構造函數將要注冊的Subject作為參數來對它進行初始化,以此建立ObserverSubject的聯系。

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

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

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

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

          ??? 在老婆的指導下,我上網查了一下yum的用法。

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

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

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

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

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

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

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

          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 伊金霍洛旗| 罗山县| 玛曲县| 樟树市| 阜宁县| 肃北| 红安县| 九龙城区| 孝昌县| 信阳市| 高陵县| 卢湾区| 东阳市| 桂东县| 丰顺县| 白河县| 城固县| 吐鲁番市| 长治县| 曲阜市| 慈利县| 含山县| 牡丹江市| 怀远县| 遵化市| 耿马| 郓城县| 绍兴县| 乌鲁木齐县| 千阳县| 桐城市| 射洪县| 泰来县| 吴堡县| 德惠市| 嘉祥县| 咸丰县| 阿合奇县| 鸡东县| 浦东新区| 德昌县|