設計模式 - 原型模式
- 注意深複製與淺賦值的問題
- C#中如果需要實現深複製,必須實現
ICloneable
介面。
using System;
namespace Factory1
{
//工作經驗類
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();
}
}
//簡歷類
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)
{
work.WorkDate = workDate;
work.Company = company;
}
//列印方法
public void Display()
{
Console.WriteLine ("{0} {1} {2}", name, sex, age);
Console.WriteLine ("workExperience:{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;
}
}
class MainClass
{
public static void Main (string[] args)
{
Resume a = new Resume ("aaa");
a.SetPersonalInfo ("man", "12");
a.SetWorkExperience ("1998-2001", "YY Company");
Resume b = (Resume)a.Clone ();
b.SetPersonalInfo ("girl", "22");
Resume c = (Resume)a.Clone ();
c.SetPersonalInfo ("boy", "66");
a.Display ();
b.Display ();
c.Display ();
}
}
}
相關文章
- 設計模式(原型模式)設計模式原型
- 設計模式:原型模式設計模式原型
- 設計模式-原型模式設計模式原型
- 設計模式 —— 原型模式設計模式原型
- Java設計模式-原型模式Java設計模式原型
- Java設計模式---原型模式Java設計模式原型
- 設計模式之原型模式設計模式原型
- 設計模式-原型模式(Prototype)設計模式原型
- 設計模式【5】-- 原型模式設計模式原型
- 設計模式(三)——原型模式設計模式原型
- java設計模式—原型模式Java設計模式原型
- 23種設計模式(八)-原型設計模式設計模式原型
- 設計模式之原型設計模式原型
- 設計模式--原型模式(Prototype Pattern)設計模式原型
- go設計模式之原型模式Go設計模式原型
- golang設計模式之原型模式Golang設計模式原型
- 設計模式入門:原型模式設計模式原型
- GoLang設計模式05 - 原型模式Golang設計模式原型
- 極簡設計模式-原型模式設計模式原型
- 設計模式 #3 (原型模式、建造者模式)設計模式原型
- 【設計模式(四)】建立型模式--原型模式設計模式原型
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- 23種設計模式-原型模式(3)設計模式原型
- 《設計模式 》 - 4. 原型模式( Prototype )設計模式原型
- 設計模式(Java語言)- 原型模式設計模式Java原型
- Java設計模式之(四)——原型模式Java設計模式原型
- 設計模式快速學習(五)原型模式設計模式原型
- C#設計模式-原型模式(Prototype Pattern)C#設計模式原型
- Rust語言之GoF設計模式:原型模式RustGo設計模式原型
- 設計模式:原型模式介紹 && 原型模式的深拷貝問題設計模式原型
- 從JavaScript學習設計模式-01原型模式JavaScript設計模式原型
- 重溫23種設計模式(11):原型模式設計模式原型
- 重學 Java 設計模式:實戰原型模式Java設計模式原型
- java23種設計模式——四、原型模式Java設計模式原型
- java中23種設計模式--原型模式(Portotype)Java設計模式原型
- 用Python實現設計模式——建造者模式和原型模式Python設計模式原型
- 設計模式學習-使用go實現原型模式設計模式Go原型
- 設計模式之-原型模式(三妻四妾)設計模式原型
- 04.原型模式設計思想原型模式