模板方法模式,定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重新定義該演算法的某些特定步驟。 模板方法模式是通過把不變行為搬到超類,去除子類中的重覆代碼來體現它的優勢。 當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重覆 ...
模板方法模式,定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重新定義該演算法的某些特定步驟。
模板方法模式是通過把不變行為搬到超類,去除子類中的重覆代碼來體現它的優勢。
當不變和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重覆出現。我們通過模板方法模式把這些行為搬到單一的地方,這樣就幫助子類擺脫重覆的不變行為的糾纏。(轉至大話設計模式)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 模板方法模式 { class Exam { public void Test01() { Console.WriteLine("第一題:"); Console.WriteLine("答案:"+answer1()); } public virtual string answer1() { return "error"; } public void Test02() { Console.WriteLine("第二題:"); Console.WriteLine("答案:"+answer2()); } public virtual string answer2() { return "error"; } } class StuA:Exam { public override string answer2() { return "A"; } public override string answer1() { return "A"; } } class StuB:Exam { public override string answer2() { return "B"; } public override string answer1() { return "B"; } } class Program { static void Main(string[] args) { Exam stuA = new StuA(); stuA.Test01(); Exam stuB = new StuB(); stuB.Test02(); Console.ReadKey(); } } }