当前位置: 首页 > news >正文

国外网站有哪些推荐的西安学校网站建设价格

国外网站有哪些推荐的,西安学校网站建设价格,济南移动网站制作,网页设计表单代码模板概述 原型模式是一种创建型设计模式,它允许你复制已有对象,而无需使代码依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制来获得,而不是每次都重新创建。 原型模式包含如下角色: 抽象原型类:规定了具…

概述

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

原型模式包含如下角色:

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

案例

简介接口

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

具体类

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. 必须维护对克隆对象的正确性,特别是在运行时状态变化时。

 

http://www.15wanjia.com/news/182534.html

相关文章:

  • 建设网站费用要进固定资产吗网站推广公司转型方向
  • 在线支付网站建设职校计算机专业主要学什么
  • 做qq群头像网站网站建设及优化 赣icp
  • linux做ppt下载网站餐饮品牌设计全案
  • 网站功能定位分析中国万网域名注册官网
  • 想搞网站建设网页设计作业10个页面
  • 销售新网站推广策略重庆seo整站优化外包服务
  • 百度站长反馈93zyz资源网站生态文明建设为
  • 鄂州网站建设价格wordpress博客添加标签
  • 门户网站建设的平台搭建帮客户做网站挣钱吗
  • 网站内侧网编品牌建设和品牌打造
  • 成都网站设计优秀柚v米科技佛山网站建设公司哪家好
  • 游戏软件开发需要学什么seo实战密码读后感
  • 怎么才能在百度搜到自己的网站wordpress主题页面如何添加vc-container
  • 怎么改版一个网站网站服务器在本地是指
  • 青岛集团网站建设女人和男人做爰网站
  • 找人做网站定金不退网上商城系统论文
  • 网上商城什么意思优化志愿网站
  • 网站html下载器哪里有网站建设加盟合作
  • 建一个购物网站大约多少钱如何优化关键词的方法
  • 石家庄公司建设网站wordpress建站方向
  • 网站设置默认首页知了seo
  • 如何使用c 进行网站开发北京做商铺的网站
  • 做网站运维的待遇湖北创研楚商网站建设销售人员
  • 个人印章在线制作网站美丽深圳微信公众号二维码
  • 内部网站如何做网站开发工程师面试题
  • 网站建设公司前十名郑州网站制作天强科技
  • 红番茄 网站点评百度手机网页版入口
  • 手机网站和电脑网站的区别少儿编程免费软件
  • 河南郑州网站设计公司市场监督管理局是什么单位