朱利IT博客首页 | 设计模式 | 数据库 | 框架开发| 程序优化 | 控件学习 | 心得体会 | 给我留言

原型模型-我的情话你也可以用

原型模式比喻
跟女朋友用QQ聊天,一定要说些深情的话语了,我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,这就是我的情话prototype-原型模式了。

原型模式意图
原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

原型模式类图
www.zhuli8.com-朱利IT博客 

原型模型实现
    /// <summary>
    /// 我的某一句情话
    /// .Net提供了IClone接口,其中有一个唯一的方法Clone(),子类只需要实现这个接口就可以实现原型模式
    /// </summary>
    class Lover : ICloneable
    {
        private String strLover;//情话

        public String StrLover
        {
            get { return strLover; }
            set { strLover = value; }
        }

        /// <summary>
        /// 实现ICloneable接口方法,实现原型模式
        /// </summary>
        /// <returns></returns>
        public object Clone()
        {
            //创建当前对象的浅表副本。
            //创建一个新对象,然后将当前对象的非静态字段复制到该对象。
            //如果字段是值类型,则对该字段执行逐位复制。
            //如果字段是引用类型,则复制引用不复制引用的对象。
            return this.MemberwiseClone();
        }
    }

    /// <summary>
    /// 原型模式客户端应用
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Lover lover = new Lover();
            lover.StrLover = "我爱你,朱利IT博客 www.zhuli8.com !";
            Console.WriteLine(lover.StrLover);
           
            //我的情话你也想用!
            Lover l = lover.Clone() as Lover;//原型模式中利用对象lover得到新的实例l

            Console.WriteLine(l.StrLover);

            Console.Read();
        }
    }

原型模式总结
只要每一个原型类继承ICloneable配备一个克隆方法,我的情话你一样可以用!

朱利IT博客原创博文:文章地址:http://www.zhuli8.com/sjms/prototype.html

posted @ 2012-03-15 08:29  木子朱  阅读(618)  评论(0编辑  收藏  举报

朱利IT博客首页 | 设计模式 | 数据库 | 框架开发| WPF| WCF| IBatisNet| 程序优化 | 控件学习 | 心得体会 | 给我留言