【風(fēng)趣的解釋】
Prototype Mode
最近教美眉用ps,該學(xué)畫筆工具了宙项》啵“畫筆工具就是用來畫畫的”,為了演示此功能尤筐,費了九牛二虎之力我給她畫了個紅色的心形汇荐。呵呵,給她點陽光她就燦爛盆繁,要求我給她畫兩個一模一樣大的掀淘。這好辦啊,復(fù)制.. 油昂,復(fù)制... , 要多少個一樣大的革娄,我都可以給你。畫的的一個心形就是一個原型冕碟,后面復(fù)制的都是從這個原型克隆出來的拦惋。
【正式的解釋】
原型模式
通過一個原型對象來指明所要創(chuàng)建的對象的類型,然后克隆這個原型對象創(chuàng)建出更多同類型的對象安寺。這就導(dǎo)致每個類都必須擁有一個克隆方法厕妖。
【Python版】
#-*- coding:utf-8 -*-
from copy import deepcopy
#心形原型
class HeartShape(object):
def __init__(self, color, size):
self.color = color
self.size = size
def clone(self):
return deepcopy(self)
#心形工廠
class HeartShapeFactory(object):
def __init__(self, obj):
self.obj = obj
def getHeartShape(self):
return self.obj.clone()
if __name__ == "__main__":
heartShapeFactory = HeartShapeFactory(HeartShape("red", "big"))
#紅色大心形,要多少有多少
a = heartShapeFactory.getHeartShape()
b = heartShapeFactory.getHeartShape()
print a.color
print b.color
print "------------------"
a.color = "yellow"
print a.color
print b.color
"""print out
red
red
------------------
yellow
red
"""
【JS版】
//心形原型
function HeartShape(color, size){
this.color = color;
this.size = size;
}
HeartShape.prototype.clone = function(){
return new HeartShape(this.color, this.size);
};
//心形工廠
function HeartShapeFacotry(obj){
this.obj = obj;
}
HeartShapeFacotry.prototype.getHeartShape = function(){
return this.obj.clone();
}
var heartShapeFacotry = new HeartShapeFacotry(new HeartShape('red', 'big'));
//紅色大心形挑庶,要多少有多少
var a = heartShapeFacotry.getHeartShape();
var b = heartShapeFacotry.getHeartShape();
console.log(a.color)
console.log(b.color)
console.log('--------------')
a.color = 'yellow';
console.log(a.color)
console.log(b.color)
/*print out
red
red
--------------
yellow
red
*/