zoukankan      html  css  js  c++  java
  • 设计模式 原型模式(深拷贝)

    先写一个被引用的类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Prototype
    {
        class WorkExperience:ICloneable
        {
            private string workDate;
            public string WorkDate
            {
                get { return workDate; }
                set { workDate = value; }
            }
    
            private string company;
            public string Company
            {
                get { return company; }
                set { company = value; }
            }
    
            public Object Clone()
            {
                return (Object)this.MemberwiseClone();
            }
        }
    }
    
    

    在写简历类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Prototype
    {
        class Resume:ICloneable
        {
            private string name;
            private string sex;
            private string age;
            private WorkExperience work;
            public Resume(string name)
            {
                this.name = name;
                work = new WorkExperience();
            }
    
            private Resume(WorkExperience work)
            {
                this.work = (WorkExperience)work.Clone();
            }
    
            public void SetPersonalInfo(string sex,string age)
            {
                this.sex = sex;
                this.age = age;
            }
    
            public void SetWorkExperience(string workDate,string company)
            {
                this.work.WorkDate = workDate;
                this.work.Company = company;
            }
    
            public void Display()
            {
                Console.WriteLine("{0} {1} {2}", name, sex, age);
                Console.WriteLine("工作经历:{0} {1}", work.WorkDate, work.Company);
            }
    
            public Object Clone()
            {
                Resume obj = new Resume(this.work);
                obj.name = this.name;
                obj.sex = this.sex;
                obj.age = this.age;
                return obj;
            }
        }
    }
    
    
    

    写测试类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Prototype
    {
        class Program
        {
            static void Main(string[] args)
            {
                Resume a = new Resume("大鸟");
                a.SetPersonalInfo("男", "29");
                a.SetWorkExperience("1990-2000", "xx公司");
    
                Resume b = (Resume)a.Clone();
                b.SetWorkExperience("1998-2006", "yy企业");
    
                Resume c = (Resume)a.Clone();
                c.SetPersonalInfo("男", "24");
    
                a.Display();
                b.Display();
                c.Display();
    
                Console.Read();
            }
        }
    }
    
    
  • 相关阅读:
    ssm集成--多模块
    ssm项目集成--单模块
    shiro的学习以及shiro集成spring
    RecyclerView的使用。
    RecyclerView 显示不全的问题.
    Android 中使用数据库作为存储,并随机发布的Demo。
    Fragment的两种加载方式。
    gradle生成的eclipse的web项目,在发布后,缺少jar包的情况。
    gradle 4,构建java web程序
    android 下载远程服务器文件。
  • 原文地址:https://www.cnblogs.com/yufenghou/p/6024516.html
Copyright © 2011-2022 走看看