Unity 设计模式之 简单工厂模式的实例介绍
1、打开Unity,新建一个空工程,具体如下图
https://exp-picture.cdn.bcebos.com/0d2fe5f202b375d7ca055240515872dadf49d8d6.jpg2、在工程中,新建几个脚本,然后双击打开,具体如下图
https://exp-picture.cdn.bcebos.com/cd93a566515985407754ed56b5a23a42a17ac4d6.jpg3、脚本的具体代码和代码内容如下图
https://exp-picture.cdn.bcebos.com/a007a9b1eef97fbd3602dd07b74133bad24133d7.jpghttps://exp-picture.cdn.bcebos.com/ce26355fd5460596306a1d643e03c8d247fe25d7.jpghttps://exp-picture.cdn.bcebos.com/340e4eb8b43ea8dbc2341386189c2cf7deb216d7.jpghttps://exp-picture.cdn.bcebos.com/125ed0ecd3d9697556ba052dd243040149fe09d7.jpghttps://exp-picture.cdn.bcebos.com/486884883913e8e55c904408352f477047187dd7.jpghttps://exp-picture.cdn.bcebos.com/3ac71c214f579356e8c51194effb960b302170d7.jpghttps://exp-picture.cdn.bcebos.com/586bfdefe078143116c8dbd8dc6699cf035362d7.jpg4、Operation 脚本具体内容如下:usingSystem.Collections;usingSystem.Collectio荏鱿胫协ns.Generic;usingUnityEngine;///<summary>///计算器操作运算符的基类///</summary>publicclassOperation{//参数 privatedouble_numberA=0; privatedouble_numberB=0;publicdoubleNumberA{ get{ return_numberA; } set{ _numberA=value; } } publicdoubleNumberB{ get{ return_numberB; } set{ _numberB=value; } }///<summary> ///Getstheresult,结果运算虚函数. ///</summary> ///<returns>Theresult.</returns> publicvirtualdoubleGetResult(){ doubleresult=0; returnresult; }}
5、OperationAdd脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;///<summary>///加法运算///</summary>publicclassOperationAdd:Operation{///<summary> ///Getstheresult,结果运算重载函数. ///</summary> ///<returns>Theresult.</returns> publicoverridedoubleGetResult(){doubleresult=0; result=NumberA+NumberB;returnresult; }}
6、OperationSub脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;///<summary>///减法运算.///</summary>publicclassOperationSub:Operation{///<summary> ///Getstheresult,结果运算重载函数. ///</summary> ///<returns>Theresult.</returns> publicoverridedoubleGetResult(){doubleresult=0; result=NumberA-NumberB;returnresult; }}
7、OperationMul脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;///<summary>///乘法运算///</summary>publicclassOperationMul:Operation{///<summary> ///Getstheresult,结果运算重载函数. ///</summary> ///<returns>Theresult.</returns> publicoverridedoubleGetResult(){doubleresult=0; result=NumberA*NumberB;returnresult; }}
8、OperationDiv脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingSystem;///<summary>///除法运算///</summary>publicclassOperationDiv:Operation{///<summary> ///Getstheresult,结果运算重载函数. ///</summary> ///<returns>Theresult.</returns> publicoverridedoubleGetResult(){doubleresult=0;if(NumberB==0) thrownewException("除数不能为0"); result=NumberA/NumberB;returnresult; }}
9、SimpleOperationFactory脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Gener足毂忍珩ic;usingUnityEngine;///<summary>///Simpleoperationfactory.///</summary>publicclassSimpleOperationFactory{///<summary> ///Createstheoperate. ///</summary> ///<returns>Theoperate.</returns> ///<paramname="operate">Operate.</param> publicstaticOperationCreateOperate(stringoperate){ Operationoper=null;switch(operate){ case"+": oper=newOperationAdd(); break;case"-": oper=newOperationSub(); break;case"*": oper=newOperationMul(); break;case"/": oper=newOperationDiv(); break; }returnoper; }}
10、Test脚本具体内容如下:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassTest:MonoBehaviour{//Usethisforinitialization voidStart(){Operationoper=newOperation();oper=SimpleOperationFactory.CreateOperate("*"); oper.NumberA=2; oper.NumberB=6; doubleresult=oper.GetResult();Debug.Log("2*6="+result); } //Updateiscalledonceperframe voidUpdate(){ }}
11、脚本编译正确,回到Unity界面,在场景中新建一个 GameObject,并把 Test 脚本赋给 GameObject,具体如下图
https://exp-picture.cdn.bcebos.com/46a92de039723d036d94d732bb486143d6d457d7.jpg12、运行场景,控制台 Console 打印如下图
https://exp-picture.cdn.bcebos.com/05aae8a75f0f822b9490f586c018512c8df14dd7.jpg13、到此,《Unity 设计模式之 简单工厂模式的实例介绍》讲解结束,谢谢