美文网首页
Prototype原型模式

Prototype原型模式

作者: _sands | 来源:发表于2019-08-27 15:17 被阅读0次
    • 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
    • 原型模式类似于细胞分裂,细胞在一定条件下,由一个分裂成2个,再由2个分裂成4个……,这个原始的细胞决定了分裂出来的细胞的组成结构。
    • Prototype类中包括一个clone方法,Client调用其拷贝方法clone即可得到实例,不需要手工去创建实例。


      image.png
      public class PrototypeTest
        {
            public static void Test()
            {
                //如果不用克隆
                {
                    Product product = new Product();
                    product.Name = "cpu";
    
                    Product copy = product;
                    copy.Name = "memory";
    
                    Console.WriteLine(product.Name);
                    Console.WriteLine(copy.Name);
                }
                //用克隆
                {
                    Product product = new Product();
                    product.Name = "cpu";
    
                    Product copy = product.Clone() as Product;
                    copy.Name = "memory";
                    Console.WriteLine(product.Name);
                    Console.WriteLine(copy.Name);
                }
    
    
            }
    
            /// <summary>
            /// 支持克隆,将创建具有相同值的类的新实例
            /// </summary>
            public class Product : ICloneable
            {
                public string Name { get; set; }
    
                public object Clone()
                {
                    return new Product
                    {
                        Name = this.Name,
                    };
                }
            }
        }
    

    看结果


    image.png

    由于对象赋值是地址引用;所有改copy的值就是在改product的值;
    如果使用clone()之后,会重新创建新的对象实例,虽然值是一样的但是改动copy是不会影响product的;

    相关文章

      网友评论

          本文标题:Prototype原型模式

          本文链接:https://www.haomeiwen.com/subject/lsysectx.html