5.原型模式
![](https://i-blog.csdnimg.cn/blog_migrate/2e7e993a610f5ce0f121a90ee722513a.png)
class Program
{
static void Main(string[] args)
{
MonkeyPrototype prototypeMonkey=new ConcretePrototype ("Monkey");
MonkeyPrototype clone1 = prototypeMonkey.Clone() as ConcretePrototype;
Console.WriteLine("克隆1:" + clone1.name);
MonkeyPrototype clone2 = prototypeMonkey.Clone() as ConcretePrototype;
Console.WriteLine("克隆2:" + clone2.name);
Console.ReadLine();
}
}
public abstract class MonkeyPrototype //孙悟空原型
{
public string name { get; set; }
public MonkeyPrototype(string Name)
{
name = Name;
}
public abstract MonkeyPrototype Clone();
}
public class ConcretePrototype:MonkeyPrototype
{
public ConcretePrototype(string id) : base(id) { }
public override MonkeyPrototype Clone()//浅拷贝
{
return (MonkeyPrototype)MemberwiseClone();//调用MemberwiseClone()的是浅拷贝
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/936c3118bcfd601f1b5bc3ee92fe4639.png)