1.  为什么要用原型?用原型的好处
比如我们有一个工具栏按钮,新建按钮,它是ToolbarButton的实例,它有长度、宽度属性等,而且属性都赋了值。
现在我们要再添加一个保存按钮,它也是ToolbarButton的实例,它也有长度、宽度属性等,不过它还没赋值,它的值和新建按钮的值一样。
如果我们不用原型设计模式的话,可能重新赋一遍值。如果我们用原型设计模式的话,我们可以把新建按钮作为保存按钮的原型。那样的话就不需要再给保存按钮赋值,它的默认的长度、宽度就和新建按钮一样了。
 
2.  在C#中怎样用原型?
因为类的实例是引用类型,要想用原有的类中的实例的数据的话,只能用clone方法。
Clone方法分为深clone和浅clone
在C#中提供了浅clone的方法,即为MemberwiseClone()
 
C#浅Clone的例子:
using System;    
   
namespace DesignPattern
{   
     public class ToolbarButton : ICloneable //实现Clone接口
     { 
   
         private int _Width; 
         private int _Height; 
 
         public ToolbarButton()
         {
         }
 
         public int Width
         {
              get
              {
                   return _Width;
              }
              set
              {
                   _Width=value;
              }
         }
 
         public int Height
         {
              get
              {
                   return _Height;
              }
              set
              {
                   _Height=value;
              }
         } 
   
   
         public object Clone()