原型模式 詳解

2021-07-15 06:13:26 字數 1594 閱讀 3869

用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件;

建立型模式

淺拷貝:使用乙個已知例項對新建立例項的成員變數逐個賦值;

深拷貝:當乙個類的拷貝構造方法,不僅要複製物件的所有非引用成員變數值,還要為引用型別的成員變數建立新的例項,並且初始化為形式引數例項值;

從網上找到的例圖

* 第一種建立物件方式

* @type }

*/var mycar = ,

panic : function

() };

// 通過object的create函式例項化乙個新的car

var yourcar = object.create(mycar);

console.log(yourcar.name);

/** * 第二種建立物件方式

* @type }

*/var verticle =

};// 使用create函式的第二個引數來初始化物件屬性

var car = object.create(verticle, ,

"model" :

});car.getmodel();

// 如果不用上面那種,則

var vehicleprototype = ,

getmodel : function

() };

function

vehicle

(model) ;

f.prototype = vehicleprototype;

var f = new f();

f.init(model);

return f;

};yourcar = new vehicle("qq");

yourcar.getmodel();

/** * 第三種方式

*/var beget = (function

() ;

return

function

(proto) ;

})();

yourcar = new beget(vehicleprototype);

yourcar.init("qq");

yourcar.getmodel();

實現結果:

原型模式允許在執行時動態改變具體的實現型別;

改變值以指定新物件;

改變結構以指定新物件;

減少子類的構造;

注意的是

1. 每個類都必須配備乙個轉殖方法,比如當所考慮的類已經存在時就難以新增clone操作,當內部包括一些不支援拷貝或有迴圈引用的物件時,不不容易實現轉殖;

原型模式 詳解

用乙個已經建立的例項作為原型,通過複製該原型物件來建立乙個和原型相同或相似的新物件。在這裡,原型例項指定了要建立的物件的種類。用這種方式建立物件非常高效,根本無須知道物件建立的細節。淺拷貝 package com.moshi public class test class user implemen...

設計模式詳解 原型模式

是指原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件。而呼叫者不需要知道任何建立細節,不呼叫建構函式 其實就是如何快速構建物件的方法總結,比如簡單工廠將getter setter封裝到某個方法中 jdk提供實現cloneable介面,實現快速複製。當初在spring配置scope prot...

設計模式詳解 原型模式

原型模式 prototype pattern 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。當直接建立物件的代價比較大時,則採用這種模式。例如,乙個物件需要在乙個高代價的資料庫操作...