摘要:原型模式一一般實現創建對象調用輸出缺點如需大量創建某對象,對象創建效率,性能低創建對象收訪問權限的限制二原型模式定義用原型實例指定創建對象的種類,并通過拷貝這些原型創建新的對象條件實現接口重寫的方法淺拷貝與深拷貝淺拷貝只拷貝對象中的基本數據
原型模式
一.一般實現 1.1 創建對象public class Entity { public Entity(){ System.out.println("create entity ..."); } }1.2 調用
public static void main(String[] args) { new Entity(); }1.3 輸出
create entity ...1.4 缺點
如需大量創建某對象,對象創建效率,性能低.
創建對象收訪問權限的限制.
二.原型模式 2.1 定義用原型實例指定創建對象的種類,并通過拷貝這些原型創建新的對象.
2.2 條件實現Cloneable接口.
重寫Object的clone方法.
2.3 淺拷貝與深拷貝淺拷貝:只拷貝對象中的基本數據類型和String類型.
深拷貝:可拷貝對象中的對象類型,集合類型(集合類基本都有自己的clone方法).
三.代碼實現 3.1 創建接口public interface IEntity extends Cloneable{ Object clone(); }3.2 創建對象
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 調用
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69411.html
摘要:組合使用構造函數模式和原型模式構造函數模式用于定義實例屬性,原型模式用于定義方法和共享的屬性。創建對象組合使用構造函數模式和原型模式指向構造函數,這里要將其恢復為指向構造函數。另外,這種混合模式,還支持向構造函數傳遞參數。 組合使用構造函數模式和原型模式 構造函數模式用于定義實例屬性,原型模式用于定義方法和共享的屬性。 創建自定義類型的最常見方式,就是組合使用構造函數模式和原型模式。 ...
摘要:目錄導語理解對象和面向對象的程序設計創建對象的方式的繼承機制原型對象原型鏈與原型對象相關的方法小結導語前面的系列文章,基本把的核心知識點的基本語法標準庫等章節講解完本章開始進入核心知識點的高級部分面向對象的程序設計,這一部分的內容將會對對象 目錄 導語 1.理解對象和面向對象的程序設計 2.創建對象的方式 3.JavaScript的繼承機制 3.1 原型對象 3.2 原型鏈 3.3 與...
摘要:創建構造函數后,其原型對象默認只會取得屬性至于其他的方法都是從繼承來的。上圖展示了構造函數的原型對象和現有的兩個實例之間的關系。所有原生的引用類型都在其構造函數的原型上定義了方法。 第6章我一共寫了3篇總結,下面是相關鏈接:讀《javaScript高級程序設計-第6章》之理解對象讀《javaScript高級程序設計-第6章》之繼承 工廠模式 所謂的工廠模式就是,把創建具體對象的過程抽象...
摘要:創建對象什么是工廠模式封裝一個函數用來創建對象并給對象中特定的屬性添加值優點是可以循環調用缺點是每一個創建出來的對象都是獨立的不能確定它是哪個類型的對象或者說是想要將哪個對象作為模板進行創建每個對象都是獨立的并且指向的不能辨別基于哪個對象為 創建對象 什么是工廠模式 ? 封裝一個函數 , 用來創建對象并給對象中特定的屬性添加值 , 優點是可以循環調用 , 缺點是每一個創建出來的對象都是...
摘要:對象是由構造函數創建而成的,所以它的指向原型鏈圖對象的原型鏈圖對象屬性引用的匿名函數的原型鏈圖 Object模式 創建一個Object實例,再為其添加屬性和方法。 這是創建自定義對象最簡單的方式。 1.創建對象 // 創建person對象 var person = new Object(); person.name = Mike; person.age = 20; person.jo...
摘要:就是通過調用構造函數而創建的那個對象實例的原型對象。創建要返回的對象可以在這里定義私有變量和函數添加函數注意寄生構造函數中是返回對象注意寄生構造函數中是注意,在以這種模式創建的對象中,除了使用方法之外,沒有其他辦法訪問的值。 一、工廠模式 function createPerson(name, age, job) { var o = new Object(); o.na...
閱讀 2234·2021-11-16 11:44
閱讀 641·2019-08-30 15:55
閱讀 3271·2019-08-30 15:52
閱讀 3595·2019-08-30 15:43
閱讀 2196·2019-08-30 11:21
閱讀 435·2019-08-29 12:18
閱讀 1945·2019-08-26 18:15
閱讀 468·2019-08-26 10:32