原型模式、建造者模式、裝飾器模式

原型模式

  1. 必須讓目標了實現Cloneable接口,該接口中沒有任何方法,這樣的接口僅僅爲一個“標記接口”,作用是告訴Jvm,任何實現了Cloneable接口的類的對象都可以被克隆!
  2. 必須寫Java.lang.Object的clone方法,一定要把該方法的訪問修飾符,重寫爲public!不然無法調用clone方法
  3. 克隆方法不會引起構造調構造器!那麼clone如何實現對象的clone?clone方法是直接賦值內存中的二進制。
  4. 既然克隆方法沒有引起構造器的調用,那麼克隆的對象和原先的對象,地址是否一致?不一致,最終是兩個不同空間的對象。
  5. 淺拷貝:將原始對象的2進制原樣複製。對於引用數據類型,淺拷貝只會拷貝地址。因此,副本對引用數據類型進行修改就會使得原數據也發生變化。
  6. 深拷貝:將原始對象的2進制原樣複製,同時對於屬性中的引用數據類型也進行了複製。因此,副本中的引用數據類型發現修改,不會使原始數據發生變化。
  7. 如果拷貝的對象比較深,那麼這種深拷貝會很麻煩。如何解決?使用序列化+反序列化已經簡化了深拷貝,但是這種方法還是存在缺點,序列化時需要寫到盤符中,這違法了Java代碼的跨平臺性。因此可以通過將序列化的結果存儲在內存中,這樣不使用盤符地址。因此這樣解決了深拷貝的缺點。

建造者模式

  1. 工廠模式,都是直接實例化一個類的對象即可
  2. 建造者模式,是在實例化類的對象之後,還要給該對象的屬性賦值
  3. 建造者模式優點:
    a .創建對象的過程是穩定的(以爲有ComputerBuilde接口來穩定過程
    b. 創建對象的過程只寫了一次,沒有重複代碼(指揮者完成)
    c. 當需要擴展指揮者時,不用修改以前的代碼,直接通過指揮者實現。
  4. 工廠模式更注重於如何實例化一個對象,建造者模式更注重於如何給實例化出來的對象賦值
    在這裏插入圖片描述

裝飾器模式

  1. 在我們之前的概念中,判斷兩個類之間能不能有繼承關係,主要看這兩個類之間有沒有“is a”關係,並且還要符合“里氏替換原則”。以上只是原則,並不是語法所強制的,也就是說,在特定的情況下,可以違反這個規則。在裝飾器模式中就可以違反這種規則。
  2. 裝飾器模式優點:功能擴展時不會違反開閉原則
  3. 裝飾器模式缺點:類還是有點多
    在這裏插入圖片描述
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章