请问关于c的具体应用场景有哪些?

2026-04-27 12:012阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计910个文字,预计阅读时间需要4分钟。

请问关于c的具体应用场景有哪些?

概述+原型模式是一种创建型设计模式,它允许复制已有对象,而不需要依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制,而不必每次都重新创建。


概述

原型模式是一种创建型设计模式,它允许你复制已有对象,而无需使代码依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制来获得,而不是每次都重新创建。

原型模式包含如下角色:

  1. 抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。
  2. 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
  3. 访问类:使用具体原型类中的 clone() 方法来复制新的对象。

案例

简介接口

public interface IResume { //填写资料 void SetPersonInfo(int age, string sex); //打印资料 void Display(); //克隆方法 object Clone(); }

具体类

请问关于c的具体应用场景有哪些?

public class Resume : IResume { private string name; private int age; private string sex; // 构造函数:初始化姓名 public Resume(string name) { this.name = name; } // 填写个人信息 public void SetPersonInfo(int age, string sex) { this.age = age; this.sex = sex; } //打印 public void Display() { Console.WriteLine("姓名:" + name); Console.WriteLine("年龄:" + age + ",性别:" + sex); } // 克隆该实例 public object Clone() { return MemberwiseClone() as Resume; } }

测试

模拟创建了一份阿豪的简介,克隆给B对象,并对B对象的年龄进行更改

public static void Main(string[] args) { //创建原型A对象 Resume a = new Resume("阿豪"); a.SetPersonInfo(18, "男"); //克隆给B对象 Resume b = a.Clone() as Resume; //修改B对象的内容 b.SetPersonInfo(20, "男"); Console.WriteLine("----------------A--------------"); a.Display(); Console.WriteLine("----------------B--------------"); b.Display(); }

再来对比一下克隆的对象与原对象

// 测试A==B? // 对任何的对象x,都有x.clone() !=x,即克隆对象与原对象不是同一个对象 Console.Write("A==B ? "); Console.WriteLine(a == b); // 对任何的对象x,都有x.clone().GetType()==x.GetType(),即克隆 Console.Write("A.GetType()==B.GetType() ? "); Console.WriteLine(a.GetType() == b.GetType());

总结

原型模式的优点:

  1. 原型模式在内存中复制对象,不会调用类的构造函数,性能优良。
  2. 简化了创建过程。在类初始化需要消耗非常多的资源的情况下,可以通过复制原型避免重复的初始化过程。
  3. 可以避免构造函数的约束。复制一个已存在的实例可以很好地保持现有实例的数据。
  4. 增加或减少产品类非常方便。客户端不需要因为创建者的更改而更改。

原型模式的缺点:

  1. 需要对每一个类都配置一个 clone 方法
  2. clone 方法位于类的内部,当对已有类进行改造的时候,需要修改代码,违背了开闭原则。
  3. 当实现深拷贝时需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用时,为了实现深拷贝,每一层都要提供深拷贝的实现方法。
  4. 必须维护对克隆对象的正确性,特别是在运行时状态变化时。



本文共计910个文字,预计阅读时间需要4分钟。

请问关于c的具体应用场景有哪些?

概述+原型模式是一种创建型设计模式,它允许复制已有对象,而不需要依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制,而不必每次都重新创建。


概述

原型模式是一种创建型设计模式,它允许你复制已有对象,而无需使代码依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制来获得,而不是每次都重新创建。

原型模式包含如下角色:

  1. 抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。
  2. 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
  3. 访问类:使用具体原型类中的 clone() 方法来复制新的对象。

案例

简介接口

public interface IResume { //填写资料 void SetPersonInfo(int age, string sex); //打印资料 void Display(); //克隆方法 object Clone(); }

具体类

请问关于c的具体应用场景有哪些?

public class Resume : IResume { private string name; private int age; private string sex; // 构造函数:初始化姓名 public Resume(string name) { this.name = name; } // 填写个人信息 public void SetPersonInfo(int age, string sex) { this.age = age; this.sex = sex; } //打印 public void Display() { Console.WriteLine("姓名:" + name); Console.WriteLine("年龄:" + age + ",性别:" + sex); } // 克隆该实例 public object Clone() { return MemberwiseClone() as Resume; } }

测试

模拟创建了一份阿豪的简介,克隆给B对象,并对B对象的年龄进行更改

public static void Main(string[] args) { //创建原型A对象 Resume a = new Resume("阿豪"); a.SetPersonInfo(18, "男"); //克隆给B对象 Resume b = a.Clone() as Resume; //修改B对象的内容 b.SetPersonInfo(20, "男"); Console.WriteLine("----------------A--------------"); a.Display(); Console.WriteLine("----------------B--------------"); b.Display(); }

再来对比一下克隆的对象与原对象

// 测试A==B? // 对任何的对象x,都有x.clone() !=x,即克隆对象与原对象不是同一个对象 Console.Write("A==B ? "); Console.WriteLine(a == b); // 对任何的对象x,都有x.clone().GetType()==x.GetType(),即克隆 Console.Write("A.GetType()==B.GetType() ? "); Console.WriteLine(a.GetType() == b.GetType());

总结

原型模式的优点:

  1. 原型模式在内存中复制对象,不会调用类的构造函数,性能优良。
  2. 简化了创建过程。在类初始化需要消耗非常多的资源的情况下,可以通过复制原型避免重复的初始化过程。
  3. 可以避免构造函数的约束。复制一个已存在的实例可以很好地保持现有实例的数据。
  4. 增加或减少产品类非常方便。客户端不需要因为创建者的更改而更改。

原型模式的缺点:

  1. 需要对每一个类都配置一个 clone 方法
  2. clone 方法位于类的内部,当对已有类进行改造的时候,需要修改代码,违背了开闭原则。
  3. 当实现深拷贝时需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用时,为了实现深拷贝,每一层都要提供深拷贝的实现方法。
  4. 必须维护对克隆对象的正确性,特别是在运行时状态变化时。