通过复制原型来创造新的对象。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { public abstract class Prototype { private string id; public Prototype(string id) { this.id = id; } public string Id { get { return id; } set { id = value; } } public abstract Prototype Clone(); } public class ConcretePrototypeA: Prototype { public ConcretePrototypeA(string id) : base(id) { } public override Prototype Clone() { return (Prototype) this.MemberwiseClone(); } } static void Main(string[] args) { ConcretePrototypeA pa = new ConcretePrototypeA("a"); ConcretePrototypeA pac1 = (ConcretePrototypeA)pa.Clone(); ConcretePrototypeA pac2 = (ConcretePrototypeA)pa.Clone(); Console.WriteLine(pac1.Id); Console.WriteLine(pac2.Id); } } }