模板方法模式
1.模板方法模式 (TemplateMethod): 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
2.结构图:
3.练习:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 模板方法模式 { class Program { static void Main(string[] args) { Console.WriteLine("学生甲抄的试卷:"); TestPaper studentA = new TestPaper1(); studentA.TestQuestion1(); studentA.TestQuestion2(); Console.WriteLine("..............................................................................."); Console.WriteLine("学生乙抄的试卷:"); TestPaper studentB = new TestPaper2(); studentB.TestQuestion1(); studentB.TestQuestion2(); Console.Read(); } } class TestPaper { public void TestQuestion1() { Console.WriteLine("杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁可能是[ ] a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维 "); Console.WriteLine("答案是:"+ Answer1()); } public void TestQuestion2() { Console.WriteLine("杨过、程英、陆无双铲除了情花,造成[ ] a.使这种植物不再害人 b.使一种珍稀物种灭绝 c.破坏了那个生物圈的生态平衡 d.造成该地区沙漠化 "); Console.WriteLine("答案是:"+Answer2()); } public virtual string Answer1() { return ""; } public virtual string Answer2() { return ""; } } #region- 学生甲的答案 - class TestPaper1 : TestPaper { public override string Answer1() { return "b"; } public override string Answer2() { return "c"; } } #endregion #region- 学生乙的答案 - class TestPaper2 : TestPaper { public override string Answer1() { return "c"; } public override string Answer2() { return "b"; } } #endregion }
4.运行结果:
欢迎转载或分享,如果文章对你有帮助,请给予推荐,欢迎交流及关注!!!
分类: 设计模式