• C# 原型模式(Prototype)


    理解:通过在类中定义一个Clone方法克隆自己,分为深COPY 和 浅COPY; 现在NET中,继承了ICloneable接口的类都可以重写Clone()方法。

    代码:

    //原型类
        [Serializable]
        public abstract class PrototypeClass
        {
            public string _myValue;

            public string MyValue
            {
                get { return _myValue; }
                set { _myValue = value; }
            }
            public abstract PrototypeClass Clone();
        }

        //浅拷贝
        public class ShallowClone:PrototypeClass
        {
            public ShallowClone(string value)
            {
                this._myValue = value;
            }

            public override PrototypeClass Clone()
            {
                return (PrototypeClass)this.MemberwiseClone();
            }
        }

        //深拷贝
        [Serializable]
        public class DeepClone : PrototypeClass
        {
            public DeepClone(string value)
            {
                this._myValue = value;
            }

            public override PrototypeClass Clone()
            {
                PrototypeClass deepObject;
                MemoryStream memoryStream = new MemoryStream();
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(memoryStream, this);
                memoryStream.Position = 0;
                deepObject = (PrototypeClass)formatter.Deserialize(memoryStream);

                return deepObject;
            }
         }
  • 相关阅读:
    js中setTimeout、setInterval、 clearInterval方法简介
    分享一个VS2008漂亮的黑色主题
    最简单的设计模式
    记一次查数据的需求
    Oracle常用存储过程写法
    关于域名解析
    使用PHP打造QQ空间神奇图片
    自制小工具含源码——SPTC上海交通卡余额查询
    自制小工具含源码——博客园图床ImageBed
    不可不知的mysql 常用技巧总结
  • 原文地址:https://www.cnblogs.com/kavilee/p/2362429.html
Copyright © 2020-2023  润新知