摘要:原型模式一一般實現(xiàn)創(chuàng)建對象調(diào)用輸出缺點如需大量創(chuàng)建某對象,對象創(chuàng)建效率,性能低創(chuàng)建對象收訪問權(quán)限的限制二原型模式定義用原型實例指定創(chuàng)建對象的種類,并通過拷貝這些原型創(chuàng)建新的對象條件實現(xiàn)接口重寫的方法淺拷貝與深拷貝淺拷貝只拷貝對象中的基本數(shù)據(jù)
原型模式
一.一般實現(xiàn) 1.1 創(chuàng)建對象public class Entity { public Entity(){ System.out.println("create entity ..."); } }1.2 調(diào)用
public static void main(String[] args) { new Entity(); }1.3 輸出
create entity ...1.4 缺點
如需大量創(chuàng)建某對象,對象創(chuàng)建效率,性能低.
創(chuàng)建對象收訪問權(quán)限的限制.
二.原型模式 2.1 定義用原型實例指定創(chuàng)建對象的種類,并通過拷貝這些原型創(chuàng)建新的對象.
2.2 條件實現(xiàn)Cloneable接口.
重寫Object的clone方法.
2.3 淺拷貝與深拷貝淺拷貝:只拷貝對象中的基本數(shù)據(jù)類型和String類型.
深拷貝:可拷貝對象中的對象類型,集合類型(集合類基本都有自己的clone方法).
三.代碼實現(xiàn) 3.1 創(chuàng)建接口public interface IEntity extends Cloneable{ Object clone(); }3.2 創(chuàng)建對象
public class Entity implements IEntity{ public Entity(){ System.out.println("create entity ..."); } @Override public Object clone() { Entity entity = null; try { entity = (Entity) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return entity; } }3.3 調(diào)用
public static void main(String[] args) { IEntity entity1 = new Entity(); IEntity entity2 = (IEntity) entity1.clone(); System.out.println(entity1.hashCode()); System.out.println(entity2.hashCode()); }3.4 輸出
create entity ... 1956725890 356573597四.源碼
https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69411.html
摘要:組合使用構(gòu)造函數(shù)模式和原型模式構(gòu)造函數(shù)模式用于定義實例屬性,原型模式用于定義方法和共享的屬性。創(chuàng)建對象組合使用構(gòu)造函數(shù)模式和原型模式指向構(gòu)造函數(shù),這里要將其恢復(fù)為指向構(gòu)造函數(shù)。另外,這種混合模式,還支持向構(gòu)造函數(shù)傳遞參數(shù)。 組合使用構(gòu)造函數(shù)模式和原型模式 構(gòu)造函數(shù)模式用于定義實例屬性,原型模式用于定義方法和共享的屬性。 創(chuàng)建自定義類型的最常見方式,就是組合使用構(gòu)造函數(shù)模式和原型模式。 ...
摘要:目錄導(dǎo)語理解對象和面向?qū)ο蟮某绦蛟O(shè)計創(chuàng)建對象的方式的繼承機制原型對象原型鏈與原型對象相關(guān)的方法小結(jié)導(dǎo)語前面的系列文章,基本把的核心知識點的基本語法標(biāo)準(zhǔn)庫等章節(jié)講解完本章開始進入核心知識點的高級部分面向?qū)ο蟮某绦蛟O(shè)計,這一部分的內(nèi)容將會對對象 目錄 導(dǎo)語 1.理解對象和面向?qū)ο蟮某绦蛟O(shè)計 2.創(chuàng)建對象的方式 3.JavaScript的繼承機制 3.1 原型對象 3.2 原型鏈 3.3 與...
摘要:創(chuàng)建構(gòu)造函數(shù)后,其原型對象默認(rèn)只會取得屬性至于其他的方法都是從繼承來的。上圖展示了構(gòu)造函數(shù)的原型對象和現(xiàn)有的兩個實例之間的關(guān)系。所有原生的引用類型都在其構(gòu)造函數(shù)的原型上定義了方法。 第6章我一共寫了3篇總結(jié),下面是相關(guān)鏈接:讀《javaScript高級程序設(shè)計-第6章》之理解對象讀《javaScript高級程序設(shè)計-第6章》之繼承 工廠模式 所謂的工廠模式就是,把創(chuàng)建具體對象的過程抽象...
摘要:創(chuàng)建對象什么是工廠模式封裝一個函數(shù)用來創(chuàng)建對象并給對象中特定的屬性添加值優(yōu)點是可以循環(huán)調(diào)用缺點是每一個創(chuàng)建出來的對象都是獨立的不能確定它是哪個類型的對象或者說是想要將哪個對象作為模板進行創(chuàng)建每個對象都是獨立的并且指向的不能辨別基于哪個對象為 創(chuàng)建對象 什么是工廠模式 ? 封裝一個函數(shù) , 用來創(chuàng)建對象并給對象中特定的屬性添加值 , 優(yōu)點是可以循環(huán)調(diào)用 , 缺點是每一個創(chuàng)建出來的對象都是...
摘要:對象是由構(gòu)造函數(shù)創(chuàng)建而成的,所以它的指向原型鏈圖對象的原型鏈圖對象屬性引用的匿名函數(shù)的原型鏈圖 Object模式 創(chuàng)建一個Object實例,再為其添加屬性和方法。 這是創(chuàng)建自定義對象最簡單的方式。 1.創(chuàng)建對象 // 創(chuàng)建person對象 var person = new Object(); person.name = Mike; person.age = 20; person.jo...
摘要:就是通過調(diào)用構(gòu)造函數(shù)而創(chuàng)建的那個對象實例的原型對象。創(chuàng)建要返回的對象可以在這里定義私有變量和函數(shù)添加函數(shù)注意寄生構(gòu)造函數(shù)中是返回對象注意寄生構(gòu)造函數(shù)中是注意,在以這種模式創(chuàng)建的對象中,除了使用方法之外,沒有其他辦法訪問的值。 一、工廠模式 function createPerson(name, age, job) { var o = new Object(); o.na...
閱讀 2323·2021-11-16 11:44
閱讀 668·2019-08-30 15:55
閱讀 3303·2019-08-30 15:52
閱讀 3646·2019-08-30 15:43
閱讀 2226·2019-08-30 11:21
閱讀 463·2019-08-29 12:18
閱讀 1985·2019-08-26 18:15
閱讀 502·2019-08-26 10:32