C#原型模式之深复制实现-阿里云开发者社区

开发者社区> 天飞> 正文

C#原型模式之深复制实现

简介:
+关注继续查看

SYSTEM空间有ICONEALBE接口。。。因为其太常用。

复制代码
  1 /*
  2  * Created by SharpDevelop.
  3  * User: home
  4  * Date: 2013/4/21
  5  * Time: 22:20
  6  * 
  7  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8  */
  9 using System;
 10 
 11 namespace Resume
 12 {
 13     class Program
 14     {
 15         public static void Main(string[] args)
 16         {
 17             Resume a = new Resume("大鸟");
 18             a.SetPersonalInfo("", "24");
 19             a.SetWorkExperience("1998-2000","国务院外事办");
 20             
 21             Resume b = (Resume)a.Clone();
 22             b.SetPersonalInfo("", "26");
 23             b.SetWorkExperience("2000-2003","香港回归事务所");
 24             
 25             Resume c = (Resume)a.Clone();
 26             c.SetPersonalInfo("", "28");
 27             c.SetWorkExperience("2005-2008","华盛顿亚洲战略中心");
 28             
 29             
 30             a.Display();
 31             b.Display();
 32             c.Display();
 33             
 34             
 35             Console.Write("Press any key to continue . . . ");
 36             Console.ReadKey(true);
 37         }
 38     }
 39     class WorkExperience : ICloneable
 40     {
 41         private string workDate;
 42         public string WorkDate
 43         {
 44             get { return workDate; }
 45             set { workDate = value; }
 46         }
 47         private string company;
 48         public string Company
 49         {
 50             get { return company; }
 51             set { company = value; }
 52         }
 53         public Object Clone()
 54         {
 55             return (object)this.MemberwiseClone();
 56         }
 57     }
 58     class Resume : ICloneable
 59     {
 60         private string name;
 61         private string sex;
 62         private string age;
 63         private WorkExperience work;
 64         
 65         public Resume(string name)
 66         {
 67             this.name = name;
 68             work = new WorkExperience();
 69         }
 70         private Resume(WorkExperience work)
 71         {
 72             this.work = (WorkExperience)work.Clone();
 73         }
 74         
 75         public void SetPersonalInfo(string sex, string age)
 76         {
 77             this.sex = sex;
 78             this.age = age;
 79         }
 80         public void SetWorkExperience(string workDate, string company)
 81         {
 82             work.WorkDate = workDate;
 83             work.Company = company;
 84         }
 85         
 86         public void Display()
 87         {
 88             Console.WriteLine("{0} {1} {2}", name, sex, age);
 89             Console.WriteLine("工作经历: {0} {1}", work.WorkDate, work.Company);
 90         }
 91         public object Clone()
 92         {
 93             Resume obj = new Resume(this.work);
 94             obj.name = this.name;
 95             obj.sex = this.sex;
 96             obj.age = this.age;
 97             return obj;
 98         }
 99     }
100 }
复制代码

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9489 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13172 0
cygwin 复制粘贴
cygwin 复制粘贴
864 0
JavaScript创建对象(四)——组合使用构造函数和原型模式
在JavaScript创建对象(三)——原型模式中,我们阐述了原型模式存在的两个问题:一是没办法通过构造函数初始化对象属性,二是共享引用类型的数据导致数据错乱。
825 0
云存储网关复制模式新玩法 - 部分复制
说到云存储网关的复制模式,相信不少人都有既爱又恨的感觉。复制模式确实是一个非常实用的功能,它将数据在云端和网关侧同时保留了两份,不但降低了数据丢失的风险,同时也极大地提高了从网关访问数据的性能。如果预算允许,我相信所有用户都会选择复制模式,这样所有的数据都会缓存在网关,使用起来性能绝对是杠杠的。
392 0
MYSQL实现主从复制
MySQL实现主从复制 1.主服务器配置 设置复制主配置 vi /etc/my.cnf [mysqld] log-bin=mysql-bin server-id=1 创建用于复制的用户 mysql> CREATE USER 'repl'@'%.
1073 0
+关注
天飞
一个运维老同志
1512
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载