大话设计-模板方法模式

在基类定义算法的结构,具体实现延迟到子类。

using System;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            TestPaper testPaperA = new TestPaperA();
            testPaperA.TestQuestion1();
            testPaperA.TestQuestion2();
            testPaperA.TestQuestion3();
            TestPaper testPaperB = new TestPaperB();
            testPaperB.TestQuestion1();
            testPaperB.TestQuestion2();
            testPaperB.TestQuestion3();
        }
    }

    class TestPaper
    {
        // 把骨架定义下来,只有答案不同,让子类实现具体答案。
        public void TestQuestion1()
        {
            Console.WriteLine("题目1:XXXXXXYYYYXXXMMM");
            Console.WriteLine($"题目1答案:{Answer1()}");
        }
        protected virtual string Answer1() { return ""; }    

        public void TestQuestion2()
        {
            Console.WriteLine("题目2:IIIPPPKKKKK");
            Console.WriteLine($"题目2答案:{Answer2()}");
        }
        protected virtual string Answer2() { return ""; }

        public void TestQuestion3()
        {
            Console.WriteLine("题目3:UUUUKKKKOOO");
            Console.WriteLine($"题目3答案:{Answer3()}");
        }
        protected virtual string Answer3() { return ""; }
    }

    class TestPaperA : TestPaper
    {
        protected override string Answer1()
        {
            return "a";
        }
        protected override string Answer2()
        {
            return "b";
        }
        protected override string Answer3()
        {
            return "c";
        }
    }
    class TestPaperB : TestPaper
    {
        protected override string Answer1()
        {
            return "b";
        }
        protected override string Answer2()
        {
            return "c";
        }
        protected override string Answer3()
        {
            return "a";
        }
    }
}

View Code

using System;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            ConcreteClass concreteClass = new ConcreteClass();
            concreteClass.TemplateMethod();
        }
    }  

   abstract class AbstractClass
    {
        public abstract void PrimitiveOperation1();
        public abstract void PrimitiveOperation2();
        public void TemplateMethod()
        {
            PrimitiveOperation1();
            PrimitiveOperation2();
            Console.WriteLine("");
        }
    }

    class ConcreteClass : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("具体操作1");
        }

        public override void PrimitiveOperation2()
        {
            Console.WriteLine("具体操作2");
        }
    }
}
(0)

相关推荐

  • 大话设计-装饰模式

    装饰模式的核心:被装饰对象(最原始),装饰对象(带有装饰功能的被装饰对象). 假设有一个被装饰对象叫"ConcreteComponent ",两个装饰对象叫"Concre ...

  • C#之winform捕获Console.WriteLine内容到日志文件

    问题描述 之前接手同事的项目,是一个类似于服务端后台的Winform程序,主界面隐藏起来,只再任务栏显示程序图标. 整个项目里面没有日志记录功能,全靠Console.WriteLine打印信息.自己调 ...

  • 设计模式之模板方法

    模板方法模式 Template Method Intro 模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算的结构即使重定义该算法的某些特定步骤 这里的 ...

  • 大话设计-代理模式

    记录大话设计学习过程. 代理模式:代理者为其他对象提供代理,以控制对真实对象的访问. 用户调用代理者,代理者通过真实的对象引用让对象去做事情.但是代理者可以附加一些功能,然后才让真实对象去做事情. 代 ...

  • 商业模式:会设计赚钱模式,才能创业

    2021-04-14 08:41:20 什么是商业模式?就是能够躺着持续赚钱的工具. 为什么要做商业模式设计?中国企业年存活率只有2.9年:餐饮行业每天有2.8万家倒闭:还有无数的企业负债经营.大部分 ...

  • 【4/25】在页面对象中启用模板方法模式(Template Method Pattern)

    这是<小游戏从0到1设计模式重构>系列内容第4篇,所有源码及资料在"程序员LIYI"公号回复"小游戏从0到1"获取. 上一小节我们应用了组合模式,对 ...

  • PHP设计模式之模板方法模式

    PHP设计模式之模板方法模式 模板方法模式,也是我们经常会在不经意间有会用到的模式之一.这个模式是对继承的最好诠释.当子类中有重复的动作时,将他们提取出来,放在父类中进行统一的处理,这就是模板方法模式 ...

  • [PHP小课堂]PHP设计模式之模板方法模式

    [PHP小课堂]PHP设计模式之模板方法模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 收藏|养老项目要盈利,就得这样设计商业模式(深度长文)

    本文字数:5092字 建议阅读时间:15分钟 在当下的养老圈,人人都在谈"商业模式",有人认为商业模式就是怎么收费,有人认为它是一种交易结构,有人认为它是项目持续盈利的系统组合.这 ...

  • 很多老板在设计商业模式时没有考虑法律法规...

    很多老板在设计商业模式时没有考虑法律法规,其管理制度.业务流程.以及交易模式.筹划税收.协议合同等都缺乏法律依据,无形中增加了企业的经营风险,也埋下了企业的不稳定因素. 如何有效的防范法律风险.降低损 ...

  • 做一个电商小程序价格和设计盈利模式的必要性

    电商小程序一般通过鸣蝉建站系统搭建,费用均在3500~8000元不等,搭建小程序不在实现方法和价格费用上,而在盈利模式的设计上. 想制作小程序的人群分为2种类型,即创业想法和实际需求. 创业想法‍ 在 ...

  • TemplateMethodPattern模板方法模式

    模板方法模式 1.定义 定义一个操作中的算法的框架,而将一些步骤的实现延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 使用模板方法模式制造两款汽车.定义汽车必须有的特质 ...