原型(Prototype)模式:以一个对象作为原型,对其进行克隆出多个和原型类似的新实例。
原型模式其实就当对象初始化复杂需要很多配置。可以使用克隆解决。
using System;
namespace CSspace
{
public abstract class GoKu {
public abstract GoKu clone();
}
public class Sunxinzhe : GoKu
{
public override GoKu clone()
{
Console.WriteLine("我乃花果山水帘洞美猴王特派取西经使者齐天大圣孙悟空的哥哥孙行者!");
return (GoKu)this.MemberwiseClone();
}
}
public class Zhexinsun : GoKu
{
public override GoKu clone()
{
Console.WriteLine("我乃花果山水帘洞美猴王特派取西经使者齐天大圣孙悟空的弟弟者行孙!");
return (GoKu)this.MemberwiseClone();
}
}
public class Copy {
public GoKu CopyMonkeyKing(GoKu sunwukong) {
return sunwukong.clone();
}
}
class Program
{
static void Main(string[] args)
{
GoKu monkeyKing = new Sunxinzhe();
GoKu monkeyKing2 = new Zhexinsun();
Copy copy = new Copy();
GoKu monkey2 = copy.CopyMonkeyKing(monkeyKing);
Console.WriteLine(monkeyKing == monkey2);
GoKu monkey3 = copy.CopyMonkeyKing(monkeyKing2);
}
}
}