用原型例項指定建立物件的種類,並通過拷貝這些原型建立新的物件;
建立型模式從網上找到的例圖淺拷貝:使用乙個已知例項對新建立例項的成員變數逐個賦值;
深拷貝:當乙個類的拷貝構造方法,不僅要複製物件的所有非引用成員變數值,還要為引用型別的成員變數建立新的例項,並且初始化為形式引數例項值;
* 第一種建立物件方式
* @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 是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。當直接建立物件的代價比較大時,則採用這種模式。例如,乙個物件需要在乙個高代價的資料庫操作...