首页 > 其他 > 详细

Prototype原型模式

时间:2019-09-04 18:01:26      阅读:56      评论:0      收藏:0      [点我收藏+]
  • 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
  • 原型模式类似于细胞分裂,细胞在一定条件下,由一个分裂成2个,再由2个分裂成4个……,这个原始的细胞决定了分裂出来的细胞的组成结构。
  • Prototype类中包括一个clone方法,Client调用其拷贝方法clone即可得到实例,不需要手工去创建实例。
    技术分享图片
  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,
                };
            }
        }
    }

看结果
技术分享图片

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

Prototype原型模式

原文:https://www.cnblogs.com/sands/p/11460241.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!