Unity 设计模式之 原型模式的实例介绍
1、原型模式:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

2、模式中的角色:
1)Prototype:原型类,声明一个克隆自身接口;
2)ConcretePrototype:具体原型类,实现一个克隆自身操作;
3、原型模式应用实例:

1、打开Unity,新建一个空工程,具体如下图

2、在工程中,新建几个脚本,然后双击打开,具体如下图

3、脚本的具体代码和代码说明如下图



4、WorkExperience 脚本具体内容如下:
using System;
public 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 ();
}
}
5、Resume 脚本具体内容如下:
using UnityEngine;
using System;
public 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(){
Debug.Log (string.Format ("{0} {1} {2}",name , sex, age ));
Debug.Log (string.Format ("工作经历:{0} {1} ",work.WorkDate , work.Company));
}
public System.Object Clone(){
Resume obj = new Resume (this.work);
obj.name = this.name;
obj.sex = this.sex;
obj.age = this.age;
return (System.Object)obj;
}
}
6、Test 脚本具体内容如下:
using UnityEngine;
public class Test : MonoBehaviour {
// Use this for initialization
void Start () {
Resume a = new Resume ("resume1");
a.SetPersonalInfo ("男", "29");
a.SetWorkExperience ("2014-2016","XX公司");
Resume b = (Resume)a.Clone ();
b.SetWorkExperience ("2014-2017","YY企业");
Resume c = (Resume)a.Clone ();
c.SetWorkExperience ("2014-2018","ZZ企业");
a.Display ();
b.Display ();
c.Display ();
}
}
7、脚本编译正确,回到Unity界面,在场景中新建一个 GameObject,并把 Test 脚本赋给 GameObject,具体如下图

8、运行场景,控制台 Console 打印如下图

9、到此,《Unity 设计模式之 原型模式的实例介绍》讲解结束,谢谢