zoukankan      html  css  js  c++  java
  • 设计模式:原型模式

    定义:用原型示例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

             原型模式其实就是从一个对象再创建一个可定制的对象,而不需要知道任何创建的细节。

    结构图

    Prototype.cs:

    abstract class Prototype
        {
            private string id;
    
            public Prototype(string id)
            {
                this.id = id;
            }
    
            public string Id
            {
                get { return id; }
            }
    
            public abstract Prototype Clone();
        }
    View Code

    ConcretePrototype.cs:

     class ConcretePrototype : Prototype
        {
            public ConcretePrototype(string id)
                : base(id)
            { }
    
            public override Prototype Clone()
            {
                return (Prototype)this.MemberwiseClone();
            }
        }
    View Code


    对于.Net而言,那个原型抽象类Prototype是不用到的,因为克隆太常用,所以在.Net在System命名空间中提供了ICloneable接口,其中包含方法Clone()。

    因此该示例可做如下修改:

    1.删除Prototype.cs

    2.ConcretePrototype.cs修改为如下图

     优点隐藏对象创建的细节,又大大的提高了性能

              如果不使用该模式,而是每次都是用New实例化对象,那么每次都要执行一次构造函数,如果构造函数执行时间很长,那么多次的执行这个初始化操作将非常低效。

    补充:

    浅复制: 被复制对象的所有变量都含有与原来的对象相同的值,而其所有的对其他对象的引用都仍然指向原来的对象。

    深复制:被复制对象会将所有非引用类型的字段复制给新对象,同时将引用类型所指向地址中存的对象复制给新的对象。

    区别:

    浅复制和深复制的区别仅在于对引用类型的对待上,一个是复制的地址,一个是复制的地址指向位置的数据.

            

  • 相关阅读:
    冲刺阶段每日站立会议个人博客十二
    冲刺阶段每日站立会议个人博客十一
    针对其他团队建议的反馈
    软件工程概论第五周学习进度条
    冲刺阶段每日站立会议个人博客十
    冲刺阶段每日站立会议个人博客九
    每日站立会议个人博客八
    每日站立会议个人博客七
    软件工程概论第四周学习进度条
    每日站立会议个人博客六
  • 原文地址:https://www.cnblogs.com/qianxingdewoniu/p/3544321.html
Copyright © 2011-2022 走看看