【Unity3D与23种设计模式】模板方法模式(Template Method)
生活随笔
收集整理的這篇文章主要介紹了
【Unity3D与23种设计模式】模板方法模式(Template Method)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
GoF中定義:
“在一個操作方法中定義算法的流程,其中某些步驟由子類完成。
模板方法模式讓子類在不變更原有算法流程的情況下,還能夠重新定義其中的步驟”
?
每一次武器攻擊目標時,都要按邏輯執(zhí)行:
1.開火、槍口特效
2.子彈特效
3.武器特效
4.通知敵方被擊中
?
而每一種武器(如:槍,炮)都要執(zhí)行一遍相同順序的邏輯
模板方法模式就是著手解決這個問題的
1.定義一個算法的流程,即是很明確地定義算法的每一個步驟,并寫在父類的方法中,而每一個步驟都可以是一個方法的調用
2.某些步驟由子類完成,不同子類的特性計算在此實現(xiàn)
?
//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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ionic1 打包过程 常用命令行
- 下一篇: 关于zookeeper中session