原型模式讲解
首先我們看一下他的定義,原型模式是指原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象,他的特點是不需要知道任何創建的細節,并且不調用構造函數,類型是創建型,那原型模式相對簡單的多
他雖然簡單,但是想用好他,還是有一定難度的,這里面有一些小坑,那后面實際coding的時候,也會一起來演示這個坑,我們看一下原型模式適用的場景,首先是類初始化消耗較多資源,一旦我們創建一個類消耗資源過多的時候,并且還要創建對象消耗資源過多的時候,可以考慮使用原型模式,另外就是new產生的一個對象,需要非常繁瑣的過程,無論是數據準備,也就是給里面的屬性賦值,或者里面的方法屬性的訪問權限的,還有當構造函數比較復雜的時候,還有一種場景,就是我們在循環體中生產大量對象時,那這幾個場景都可以考慮使用原型模式,那我們看一下原型模式的優點
首先原型模式性能上,比直接new一個對象啊,性能高,另外簡化他的創建過程,那有優點也有缺點
他的缺點是什么呢,必須配備克隆方法,如果我們沒有重寫Object的克隆方法的話,那這個呢也不會生效,那這個模式的核心,就是克隆方法,通過這個方法進行對象的拷貝,Java提供了一個Cloneable這個接口來標識,這個對象是可拷貝的,那為什么要標識呢,在JVM中,只有被標識的對象才有可能被拷貝,有可能被拷貝,那怎么樣才一定被拷貝呢,那就是說,我們還要覆蓋Object的克隆方法,所以這個缺點,就是必須配備克隆方法,那有時候可能會忘記,重寫Object的克隆方法,那導致引入了風險,那我們接著看一下,對克隆復雜對象,注意復雜對象,還有對克隆出的對象,進行復雜的改造時,容易引入風險,那這里說的復雜對象,就跟第三條有關了,在對復雜對象進行深拷貝,淺拷貝的時候呢,要運用得當,否則很容易引入風險,如果對克隆出的對象進行復雜改造時,也是非常容易引入風險的,所以原型非常簡單
但是這些坑我們要了解,并且規避他們,那最主要的原型的擴展,深克隆和淺克隆,后續在coding的過程中,來領會深克隆和淺克隆,對于引用類型,如果需要他們指向不同的對象,那我們一定要使用深克隆
深克隆對于某一個對象的引用對象的時候,我們要顯示的去寫,對于哪個屬性進行深克隆,而淺克隆實現比較簡單,跟著coding就實現了淺克隆,那這些知識點,如果現在理解不了沒關系,一會我們一起coding之后,就理解了,接下來我們就一起來coding,查看一下源碼解析,因為原型模式的UML,非常非常簡單,主要還是通過克隆這種方式,所以類之間的關系非常簡單,現在我們就一起來coding
?
總結
- 上一篇: 单例模式源码分析(jdk+spring+
- 下一篇: 原型模式codeing