千家信息网

.NET原型模式的定义及实例用法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍".NET原型模式的定义及实例用法",在日常操作中,相信很多人在.NET原型模式的定义及实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答".NET原
千家信息网最后更新 2026年11月02日.NET原型模式的定义及实例用法

这篇文章主要介绍".NET原型模式的定义及实例用法",在日常操作中,相信很多人在.NET原型模式的定义及实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答".NET原型模式的定义及实例用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

原型模式的定义:

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

原型模式结构图:

创建型模式中一个比较特殊的模式-原型模式,有个最大的特点是克隆一个现有的对象,这个克隆的结果有2种,一种是浅度复制,另一种是深度复制。

创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。

1.原型模式:浅度复制

定义一个接口, 用来表述所有的颜色对象接口

  ///   /// 颜色接口  ///   public interface IColor  {    IColor Clone();    int Red { get; set; }    int Green { get; set; }    int Blue { get; set; }  }

给出红色的具体实现代码:

  public class RedColor:IColor  {    public int Red { get; set; }    public int Green { get; set; }    public int Blue { get; set; }    public IColor Clone()    {      return (IColor)this.MemberwiseClone();     }   }

具体的测试代码如下:

static void Main(string[] args)    {      IColor color = new RedColor();      color.Red = 255;      Console.WriteLine("color -red " + color.Red); //225      IColor color1 = color.Clone();      color1.Red = 224;      Console.WriteLine("color1-red " + color1.Red);//224      Console.WriteLine("color -red " + color.Red); //225    }

可以发现:在我们修改color1对象的Red属性值,没有对color的属性参生影响,即对象副本的修改不会影响对象本身的状态。

2.原型模式:深度复制

深复制考虑的情况相对来说就会比较复杂,因为有可能对象是之间有继承关系或者引用关系的时候,可能我们深复制的时候就需要注意.一般来说深复制一方面可以采用种简单的深复制对象的时候的方案,还可以通过序列化的形式来进行对象的复制。下面通过序列化的形式来实现原型模式:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication4{  ///   /// 颜色接口  ///   public interface IColor  {    IColorDemo Clone();    int Red { get; set; }    int Green { get; set; }    int Blue { get; set; }    Factroy f{get;set;}  }  ///   /// 生产颜色的工厂信息  ///   [Serializable]  public class Factroy  {    public string name { get; set; }  }}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication4{  ///   /// 颜色  ///   [Serializable]  public class RedColor:IColor  {    public int Red { get; set; }    public int Green { get; set; }    public int Blue { get; set; }    public Factroy f { get; set; }    public IColor Clone()    {      SerializableHelper s = new SerializableHelper();      string target = s.Serializable(this);      return s.Derializable(target);     }   }}

序列化帮助类:

///   /// 序列化和反序列化辅助类  ///   public class SerializableHelper  {    public string Serializable(object target)    {      using (MemoryStream stream = new MemoryStream())      {        new BinaryFormatter().Serialize(stream, target);        return Convert.ToBase64String(stream.ToArray());      }    }    public object Derializable(string target)    {      byte[] targetArray = Convert.FromBase64String(target);      using (MemoryStream stream = new MemoryStream(targetArray))      {        return new BinaryFormatter().Deserialize(stream);      }    }    public T Derializable(string target)    {      return (T)Derializable(target);    }  }

测试:

  static void Main(string[] args)  {    IColor color = new RedColor();    color.Red = 255;    color.f = new Factroy() { name="湖北工厂" };    Console.WriteLine("color - Factroy:" + color.f.name); //湖北工厂    IColor color1 = color.Clone();    color1.Red = 234;    color1.f.name = "北京工厂";    Console.WriteLine("color1- Factroy:" + color1.f.name); //北京工厂    Console.WriteLine("color - Factroy:" + color.f.name); //湖北工厂    Console.Read();  }

程序的运行结果如下:


结论:通过序列化和反序列化形成新的对象。其实只要是项目中要使用原型模式进行对象复制的情况下,都可以通过序列化的形式来进行深复制。

到此,关于".NET原型模式的定义及实例用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

对象 模式 原型 序列 工厂 实例 颜色 接口 学习 形式 时候 湖北 帮助 代码 可以通过 属性 情况 更多 深度 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会主任 江苏根荣互联网科技 奇酷互联网科技公司 狮子座互联网科技有限公司 银优互联网科技有限公司 新华互联网科技校企合作 互联网软件和科技 互联网5g黑科技有哪些 成都互联网科技公司工作好不好 互联网科技扶贫时间 青海科技产业互联网发展 互联网科技如何创业 上海科技产业互联网平台 美国互联网科技公司 35岁以上互联网科技行业 萌小萌互联网科技河南有限公司 福州德业互联网科技 互联网金融运营模式中的金融科技 绵阳真晨互联网科技有限公司 每日互联网科技新闻 上海挚品互联网科技有限公司 博彦科技互联网金融 新华互联网科技 金融科技创新监管互联网金融 贷财互联网科技 湖北码尼互联网科技有限公司电话 彤创互联网科技有限公司 云南省自由互联网科技有限公司 玉溪新华互联网科技怎么选 互联网科技的前景
0