快捷搜索:

Javascript玩转Prototype(一)——先谈C#原型模式

在《》中,我应用了原型承袭法来实现Javascript的承袭,那原型究竟奥秘何在。在这篇文章中,我就主要针对原型来展开评论争论。

抛开Javascript,我们先来看我们认识的老例的面向工具说话。在23种设计模式中,大年夜家必然会记得有一种设计模式——原型模式。我们先来看一下布局图:

(原图引自:http://terrylee.cnblogs.com/archive/2006/01/16/317896.html)

先来复习一下原型模式:看到这个图,大年夜家必然会留意到这个千切切万的Clone()措施,这个便是原型模式的核心。原型模式便是用原型实例来创建工具的种类,然后经由过程拷贝这些原型来创建新的工具。

在.NET中,这个模式的实现很轻易,我们只必要实现ICloneable接口:

我还记得在爱情左灯右行里那个Angel说了这样一句话,任何器械到了批量临盆的时刻,这个质量就得不到包管了。这个是范例的原型模式:批量临盆。为什么质量会下降呢?缘故原由就在于他是采纳的复制。

看代码:

class People:ICloneable

{

private string name;

private int age;

private List friends = new List();

public People(string name,int age,params string[] names)

{

this.name=name;

this.age=age;

foreach (string s in names)

{

friends.Add(s);

}

}

public string Name

{

get{return name;}

set{name=value;}

}

public int Age

{

get{return age;}

set{age=value;}

}

public List Friends

{

get { return friends; }

set { friends = value; }

}

public object Clone()

{

return this.MemberwiseClone();

}

public override string ToString()

{

string ret = "name:"+name+" age:"+age+" friends: ";

foreach (string s in friends)

{

ret += s + ",";

}

return ret;

}

}

您可能还会对下面的文章感兴趣: