设计模式.模板方法模式(Template).pptx

上传人:wuy****n92 文档编号:73977345 上传时间:2023-02-23 格式:PPTX 页数:29 大小:1.49MB
返回 下载 相关 举报
设计模式.模板方法模式(Template).pptx_第1页
第1页 / 共29页
设计模式.模板方法模式(Template).pptx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《设计模式.模板方法模式(Template).pptx》由会员分享,可在线阅读,更多相关《设计模式.模板方法模式(Template).pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、LOGO设计模式设计模式(Design Pattern)张凯 副教授计算机学院 软件工程系武汉科技大学问题问题(Problem)(Problem)v题目抄错,会做也白搭武汉科技大学问题问题(Problem)(Problem)class TestPaperA /试题1 public void TestQuestion1()Console.WriteLine(杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁 可能是 a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维);Console.WriteLine(答案:b);/试题2 public void TestQuestion2()Console

2、.WriteLine(杨过、程英、陆无双铲除了情花,造成 a.使这种植物不再害人 b.使一种珍稀物种灭绝 c.破坏了那个生物圈的生态平衡 d.造成该地区沙漠化 );Console.WriteLine(答案:a);/试题3 public void TestQuestion3()Console.WriteLine(蓝凤凰的致使华山师徒、桃谷六仙呕吐不止,如果你是大夫,会给他们 开什么药 a.阿司匹林 b.牛黄解毒片 c.氟哌酸 d.让他们喝大量的生牛奶 e.以上全不对 );Console.WriteLine(答案:c);学生甲的试卷武汉科技大学问题问题(Problem)(Problem)class

3、 TestPaperB /试题1 public void TestQuestion1()Console.WriteLine(杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁 可能是 a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维);Console.WriteLine(答案:d);/试题2 public void TestQuestion2()Console.WriteLine(杨过、程英、陆无双铲除了情花,造成 a.使这种植物不再害人 b.使一种珍稀物种灭绝 c.破坏了那个生物圈的生态平衡 d.造成该地区沙漠化 );Console.WriteLine(答案:b);/试题3 public

4、 void TestQuestion3()Console.WriteLine(蓝凤凰的致使华山师徒、桃谷六仙呕吐不止,如果你是大夫,会给他们 开什么药 a.阿司匹林 b.牛黄解毒片 c.氟哌酸 d.让他们喝大量的生牛奶 e.以上全不对 );Console.WriteLine(答案:a);学生乙的试卷武汉科技大学问题问题(Problem)(Problem)static void Main(string args)Console.WriteLine(学生甲的试卷:);TestPaperA studentA=new TestPaperA();studentA.TestQuestion1();stud

5、entA.TestQuestion2();studentA.TestQuestion3();Console.WriteLine(学生乙的试卷:);TestPaperB studentB=new TestPaperB();studentB.TestQuestion1();studentB.TestQuestion2();studentB.TestQuestion3();Console.Read();学生甲和学生乙的学生甲和学生乙的试卷卷类非常非常类似,似,除了答案不同,没什么区除了答案不同,没什么区别,如果老,如果老师修改修改题目,目,2个个类都需要修改。都需要修改。武汉科技大学问题问题(Pro

6、blem)(Problem)class TestPaper /试题1 public void TestQuestion1()Console.WriteLine(杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁 可能是 a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维);Console.WriteLine(答案:b);/试题2 public void TestQuestion2()Console.WriteLine(杨过、程英、陆无双铲除了情花,造成 a.使这种植物不再害人 b.使一种珍稀物种灭绝 c.破坏了那个生物圈的生态平衡 d.造成该地区沙漠化 );Console.WriteLine

7、(答案:a);/试题3 public void TestQuestion3()Console.WriteLine(蓝凤凰的致使华山师徒、桃谷六仙呕吐不止,如果你是大夫,会给他们 开什么药 a.阿司匹林 b.牛黄解毒片 c.氟哌酸 d.让他们喝大量的生牛奶 e.以上全不对 );Console.WriteLine(答案:c);试卷父类试卷父类武汉科技大学问题问题(Problem)(Problem)学生甲的试卷 class TestPaperA:TestPaper public new void TestQuestion1()base.TestQuestion1();Console.WriteLin

8、e(答案:c);public new void TestQuestion2()base.TestQuestion2();Console.WriteLine(答案:b);public new void TestQuestion3()base.TestQuestion3();Console.WriteLine(答案:a);class TestPaperB:TestPaper public new void TestQuestion1()base.TestQuestion1();Console.WriteLine(答案:d);public new void TestQuestion2()base.T

9、estQuestion2();Console.WriteLine(答案:c);public new void TestQuestion3()base.TestQuestion3();Console.WriteLine(答案:a);学生乙的试卷武汉科技大学问题问题(Problem)(Problem)class TestPaper public void TestQuestion1()Console.WriteLine(杨过得到,后来给了郭靖,炼成倚天剑、屠龙 刀的玄铁可能是 a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维);Console.WriteLine(答案:+Answer1();

10、protected virtual string Answer1()return;武汉科技大学问题问题(Problem)(Problem)/学生甲抄的试卷 class TestPaperA:TestPaper protected override string Answer1()return b;protected override string Answer2()return c;protected override string Answer3()return a;/学生乙抄的试卷 class TestPaperB:TestPaper protected override string A

11、nswer1()return c;protected override string Answer2()return a;protected override string Answer3()return a;武汉科技大学问题问题(Problem)(Problem)武汉科技大学问题问题(Problem)(Problem)static void Main(string args)Console.WriteLine(学生甲抄的试卷:);TestPaper studentA=new TestPaperA();studentA.TestQuestion1();studentA.TestQuestion

12、2();studentA.TestQuestion3();Console.WriteLine(学生乙抄的试卷:);TestPaper studentB=new TestPaperB();studentB.TestQuestion1();studentB.TestQuestion2();studentB.TestQuestion3();Console.Read();武汉科技大学主要内容主要内容模式动机与定义1模式结构与分析2模式实例与解析3模式效果与应用4武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式动机模式名称:模板方法模式(Te

13、mplate Method)准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式动机很多人可能没有想到,模版方法模式实际上是所有模式中最为常见的几个模式之一,而且很多人可能使用过模版方法模式而没有意识到自己已经使用了这个模式。模版方法模式是基于继承的代码复用的基本技术,模版方法模式的结构和用法也是面向对象设计的核心。武汉科技大学模

14、板方法模式模板方法模式(Template Method)(Template Method)v模式动机模版方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负 责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本法方法总汇起来的方法叫做模版方法(template method),这个设计模式的名字就是从此而来。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式定义 模板方法(Template Method):定义一个

15、操作中算法的骨架,而将一些 步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是一种类行为型模式。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式结构 武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v参与者 AbstractClass:抽象类 ConcreteClass:具体子类 武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v例子 极品飞车中有很多的汽车,但是从操作角度

16、看大同小异。无非是起步(StartUp)、行驶(Run)、停车(Stop)等行为。结合Template Method模式讲就是在这个程序中,结构(对汽车的操作)是稳定的,但是变化在于各个子步骤(操作行为的具体实现)。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)public abstract class AbstractCar protected abstract string StartUp();protected abstract string Run();protected abstract string Stop();publi

17、c void DriveOnTheRoad()Console.WriteLine(StartUp();Console.WriteLine(Run();Console.WriteLine(Stop();在在这段代段代码中,抽象方法中,抽象方法StartUp、Run、Stop叫做叫做primitive operation(原(原语操作),它操作),它们是在子是在子类中的中的扩展展点。点。AbstractCar中的中的DriveOnTheRoad方法叫做方法叫做template method(模板方法),(模板方法),template method用用primitive operation定定义一个

18、算法,是相一个算法,是相对稳定的部分。(子定的部分。(子类中重新中重新定定义primitive operation)。)。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)public class BORA:AbstractCar protected override string StartUp()return BORA is StartUp;protected override string Run()return BORA is Running;protected override string Stop()return BORA i

19、s Stoped;武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)static void Main(string args)AbstractCar car=new BORA();car.DriveOnTheRoad();Console.Read();武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模板方法模式的优缺点如下模板方法模式在一个类中形式化地定义算法,而由它的子类实现细节的处理。模板方法模式的优势是,在子类定义详细的处理算法时不会改变算法的结构。模板方法是一种代码复用的基本

20、技术,它们在类库中尤为重要,它们提取了类库中的公共行为。模板方法导致一种反向的控制结构,一个父类调用一个子类的操作,而不是相反。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模板方法模式的优缺点如下模板方法的缺点在于每个不同的实现都需要定义一个子类,这会导致类的个数增加,但是更加符合类职责的分配原则,使得类的内聚性得以提高。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式使用在以下情况下可以使用模板方法模式:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子

21、类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。对一些复杂的算法进行分割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而一些可以改变的细节由其子类来实现。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式应用模板方法模式主要应用于框架设计,以确保父类控制处理流程的逻辑顺序(如框架的初始化)。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式应用模板方法模式鼓励我们恰当使用继承,此模式可以用来改写一些拥有相同功能的相关类,将可复用的一般性的行为代码移到

22、父类里面,而将特殊化的行为代码移到子类里面。这也进一步说明,虽然继承复用存在一些问题,但是在某些情况下还是可以给开发人员带来方便,模板方法模式就是体现继承优势的模式之一。武汉科技大学模板方法模式模板方法模式(Template Method)(Template Method)v模式应用在模板方法模式中,子类不显式调用父类的方法,而是通过覆盖父类的方法来实现某些具体的业务逻辑,父类控制对子类的调用,这种机制被称为好莱坞原则(Hollywood Principle),即“不要给我们打电话,我们会给你打电话(Dont call us,well call you)”。在模板方法模式中,好莱坞原则体现在:子类不需要调用父类,而通过父类来调用子类,将某些步骤的实现写在子类中,由父类来控制整个过程。LOGO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁