乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

原文:乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

[索引页][源码下载]

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

作者:webabcd





介绍

用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。





示例

有一个Message实体类,现在要克隆它。

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)





MessageModel

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Collections.Generic;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Text;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)namespace Pattern.Prototype

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// Message实体类

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    public class MessageModel

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 构造函数

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// <param name="msg">Message内容</param>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// <param name="pt">Message发布时间</param>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public MessageModel(string msg, DateTime pt)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            this._message = msg;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            this._publishTime = pt;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        private string _message;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// Message内容

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public string Message

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            get 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ return _message; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            set 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ _message = value; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        private DateTime _publishTime;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// Message发布时间

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public DateTime PublishTime

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            get 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ return _publishTime; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            set 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ _publishTime = value; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)}

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

ShallowCopy

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Collections.Generic;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Text;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)namespace Pattern.Prototype

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// 浅拷贝

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    public class ShallowCopy : ICloneable

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 构造函数

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public ShallowCopy()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 实现ICloneable的Clone()方法

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// <returns></returns>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public Object Clone()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            return this.MemberwiseClone();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        private MessageModel _mm;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// Message实体对象

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public MessageModel MessageModel

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            get 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ return _mm; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            set 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ _mm = value; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)}

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

DeepCopy

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Collections.Generic;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Text;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)namespace Pattern.Prototype

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// 深拷贝

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    public class DeepCopy : ICloneable

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 构造函数

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public DeepCopy()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 构造函数

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// <param name="mm">Message实体对象</param>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public DeepCopy(MessageModel mm)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            _mm = mm;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// 实现ICloneable的Clone()方法

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// <returns></returns>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public Object Clone()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            return new DeepCopy(new MessageModel(_mm.Message, _mm.PublishTime));

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        private MessageModel _mm;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /**//// <summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// Message实体对象

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        /// </summary>

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        public MessageModel MessageModel

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            get 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ return _mm; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)            set 乐在其中设计模式(C#) - 原型模式(Prototype Pattern){ _mm = value; }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)}

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

client

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Data;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Configuration;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Collections;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web.Security;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web.UI;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web.UI.WebControls;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web.UI.WebControls.WebParts;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using System.Web.UI.HtmlControls;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)using Pattern.Prototype;

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)public partial class Prototype : System.Web.UI.Page

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    protected void Page_Load(object sender, EventArgs e)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("ShallowCopy演示如下:<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        ShowShallowCopy();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("DeepCopy演示如下:<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        ShowDeepCopy();    

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    private void ShowShallowCopy()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        ShallowCopy sc = new ShallowCopy();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        sc.MessageModel = new MessageModel("ShallowCopy", DateTime.Now);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        ShallowCopy sc2 = (ShallowCopy)sc.Clone();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc2.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        sc.MessageModel.Message = "ShallowCopyShallowCopy";

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc2.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    private void ShowDeepCopy()

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    乐在其中设计模式(C#) - 原型模式(Prototype Pattern){

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        DeepCopy sc = new DeepCopy();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        sc.MessageModel = new MessageModel("DeepCopy", DateTime.Now);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        DeepCopy sc2 = (DeepCopy)sc.Clone();

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc2.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        sc.MessageModel.Message = "DeepCopyDeepCopy";

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write(sc2.MessageModel.Message);

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)        Response.Write("<br />");

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)    }

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)}

乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

运行结果

ShallowCopy演示如下:

ShallowCopy

ShallowCopy

ShallowCopyShallowCopy

ShallowCopyShallowCopy

DeepCopy演示如下:

DeepCopy

DeepCopy

DeepCopyDeepCopy

DeepCopy





参考

http://www.dofactory.com/Patterns/PatternPrototype.aspx





OK

[源码下载]

上一篇:I2C总线之(一)---概述


下一篇:无法从“void (__thiscall CtestDlg::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”