Java設計模式(三)原型模型 介面卡型號

2021-09-07 01:12:41 字數 2116 閱讀 9629

(五歲以下兒童)原型模型 prototype

樣機模型旨在複製乙個現有物件來建立新物件。而不是通過的方式的例項。原型模式須要實現 cloneable 介面。覆寫clone方法,複製分為淺複製、深複製。

淺複製:將乙個物件複製後。基本資料型別的變數都又一次建立,引用型別。指向的還是原物件所指向的。

深複製:講乙個物件複製後。不論基本資料型別和引用型別,都是又一次建立。是全然的徹底的複製。

public class prototype 

}class user implements cloneable,serializable

//淺複製

public object shallowclone() throws clonenotsupportedexception

//深複製

public object clone() throws clonenotsupportedexception catch (ioexception e) catch (classnotfoundexception e)

finally catch (ioexception e)

} }}class father implements serializable{}

原型模式與呼叫建構函式相比,複製建立的新物件會包括原始物件的某些狀態,尤其當多個物件的類在屬性上存在細微區別,方法全然同樣時候。

淺複製與深複製還存在乙個問題就是引用型別成本的問題。對於**來說就是 father 值的問題。上面的**改動下。

class father implements serializable

public static void main(string args) throws exception

這樣應該能跟深刻的理解了。

(六)介面卡模式

介面卡的意義在於,使用不同介面的類所提供的服務為client提供它所期望的介面。原型別不做不論什麼改變。用乙個介面卡把乙個介面轉成還有乙個介面,擴充套件了新的介面。介面卡是物件導向的精髓。介面卡模式主要分為三類:類的介面卡模式、物件的介面卡模式、介面的介面卡模式。

類的介面卡模式:

source類。擁有乙個方法。待適配,目標介面 targetable 。通過 adapter 類將source的功能擴充套件到 targetable 。

class source

}inte***ce targetable

class adapter extends source implements targetable

public void method2()

}public class adaptertest

}

物件的介面卡模式:

跟類的介面卡模式基本同樣,僅僅是不繼承source 類,持有source類的例項。

class adapter implements targetable

//能夠覆寫source的方法。也能夠刪去method1.會呼叫source的

public void method1()

public void method2()

}public class adaptertest

}

介面介面卡:介面介面卡跟前兩種有點差別。乙個介面會有多個抽象方法,我們寫介面的實現類的時候,必須實現該介面全部的方法,可是並非全部方法都是我們須要的,為了解決問題。我們引入了介面介面卡。借助於乙個抽象類,改抽象類實現了上面的介面,並實現了全部的方法。而我們不和原始的介面打交道,僅僅和該抽象類取得聯絡。

我們最後寫乙個類,繼承該抽象類。重寫我們須要的方法。

inte***ce sourceable

//父類或者子類必須有乙個實現method1 跟method2介面

} //由於父類已經實現了method2所以不會報錯

public void method1()

} public void method2()

}public class adapterinte***ce

}

設計模式(三) 原型模式

用原型例項指定建立的種類,並通過複製這些原型建立新的物件。原型模式的本質上就是物件拷貝。1 類初始化需要消耗非常多的資源,這個資源包括資料 硬體資源等,通過原型複製這些消耗。2 通過new產生乙個物件需要非常繁瑣的資料準備或訪問許可權,這時可以使用原型模式。3 乙個物件需要提供給其他物件訪問,而且各...

設計模式 三 原型模式

原理 示例 原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。簡單的說,就是轉殖乙個物件。適用於大物件的建立,因為建立乙個大物件需要很大的開銷,如果每次new就會消耗很大,原型模式僅需記憶體拷貝即可...

設計模式三 原型模式

原型模式 我們從資料庫獲取資料到dto,從dto傳遞給vo,這個時候需要將dto層的資料全部copy到vo中,這種模式就是一種原型模式。copy的方式是轉殖。案例 spring中的 scope prototype 是乙個原型模式,每次建立的時候都是乙個新的物件,這個物件會取到原有物件的所有的值。淺轉...