Unity 设计模式之 原型模式的实例介绍

2025-11-01 06:16:43

1、原型模式:

       用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

Unity 设计模式之 原型模式的实例介绍

2、模式中的角色:

       1)Prototype:原型类,声明一个克隆自身接口;

       2)ConcretePrototype:具体原型类,实现一个克隆自身操作;

3、原型模式应用实例:

Unity 设计模式之 原型模式的实例介绍

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

Unity 设计模式之 原型模式的实例介绍

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

Unity 设计模式之 原型模式的实例介绍

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

Unity 设计模式之 原型模式的实例介绍

Unity 设计模式之 原型模式的实例介绍

Unity 设计模式之 原型模式的实例介绍

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,具体如下图

Unity 设计模式之 原型模式的实例介绍

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

Unity 设计模式之 原型模式的实例介绍

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢