日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【Unity3D与23种设计模式】模板方法模式(Template Method)

發(fā)布時間:2025/3/15 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity3D与23种设计模式】模板方法模式(Template Method) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

GoF中定義:

“在一個操作方法中定義算法的流程,其中某些步驟由子類完成。

模板方法模式讓子類在不變更原有算法流程的情況下,還能夠重新定義其中的步驟”

?

每一次武器攻擊目標時,都要按邏輯執(zhí)行:

1.開火、槍口特效

2.子彈特效

3.武器特效

4.通知敵方被擊中

?

而每一種武器(如:槍,炮)都要執(zhí)行一遍相同順序的邏輯

模板方法模式就是著手解決這個問題的

1.定義一個算法的流程,即是很明確地定義算法的每一個步驟,并寫在父類的方法中,而每一個步驟都可以是一個方法的調用

2.某些步驟由子類完成,不同子類的特性計算在此實現

?

//TemplateMethod.cs public abstract class AbstractClass {public void TemplateMethod() {PrimitiveOperation1();PrimitiveOperation2();}protected abstract void PrimitiveOperation1();protected abstract void PrimitiveOperation2(); }public class ConcreteClassA : AbstractClass {protected override void PrimitiveOperation1(){Debug.Log("ConcreteClassA.PrimitiveOperation1");}protected override void PrimitiveOperation2(){Debug.Log("ConcreteClassA.PrimitiveOperation2");} }public class ConcreteClassB : AbstractClass {protected override void PrimitiveOperation1(){Debug.Log("ConcreteClassB.PrimitiveOperation1");}protected override void PrimitiveOperation2(){Debug.Log("ConcreteClassB.PrimitiveOperation2");} } //TemplateMethodTest.CS void UnitTest() {AbstractClass theClass = new ConcreteClassA();theClass.TemplateMethod();theClass = new ConcreteClassB();theClass.TemplateMethod(); } //測試結果 ConcreteClassA.PrimitiveOperation1 ConcreteClassA.PrimitiveOperation2 ConcreteClassB.PrimitiveOperation1 ConcreteClassB.PrimitiveOperation2

?

?

文章整理自書籍《設計模式與游戲完美開發(fā)》 菜升達 著

轉載于:https://www.cnblogs.com/fws94/p/7211256.html

總結

以上是生活随笔為你收集整理的【Unity3D与23种设计模式】模板方法模式(Template Method)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。