ImageVerifierCode 换一换
格式:PPT , 页数:23 ,大小:62.50KB ,
资源ID:5434291      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5434291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(10 设计模式教学课件.ppt)为本站会员(kpmy5893)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

10 设计模式教学课件.ppt

1、模板方法模式,Template Method,由考试的例子想到的。 准备一个抽象类,将部分逻辑以具体方法以及具体子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。,考试例子,class TestPaperpublic void TestQuestion1()Console.WriteLine(“ 杨过得到,后来给了郭靖,炼成倚天剑、屠龙刀的玄铁可能是 a.球磨铸铁 b.马口铁 c.高速合金钢 d.碳素纤维 “);Console.WriteLine(“答案:“ + Answer1();

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

3、(“答案:“ + Answer3();,protected virtual string Answer1()return “;protected virtual string Answer2()return “;protected virtual string Answer3()return “;,/学生甲抄的试卷class TestPaperA : TestPaperprotected override string Answer1()return “b“;protected override string Answer2()return “c“;protected override str

4、ing Answer3()return “a“;,/学生乙抄的试卷class TestPaperB : TestPaperprotected override string Answer1()return “c“;protected override string Answer2()return “a“;protected override string Answer3()return “a“;,static void Main(string args)Console.WriteLine(“学生甲抄的试卷:“);TestPaper studentA = new TestPaperA();stu

5、dentA.TestQuestion1();studentA.TestQuestion2();studentA.TestQuestion3();Console.WriteLine(“学生乙抄的试卷:“);TestPaper studentB = new TestPaperB();studentB.TestQuestion1();studentB.TestQuestion2();studentB.TestQuestion3();Console.Read();,模板方法模式实际上是所有模式中最为常见的几个模式之一,而且很多人可能使用过模板方法模式而没有意识到自己已经使用了这个模式。模板方法模式是基

6、于继承的代码复用的基本技术,模板方法模式的结构和用法也是面向对象设计的核心。,模式定义,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,模版方法模式需要开发抽象类和具体子类的设计师之间的协作。 一个设计师负责给出一个算法的轮廓和骨架 另一些设计师则负责给出这个算法的各个逻辑步骤。 代表这些具体逻辑步骤的方法称做基本方法(primitive method) 将这些基本方法总汇起来的方法叫做模版方法(template method),这个设计模式的名字就是从此而来。,应用场景,当我们要完成在某一细节层次一致的一个过程或一

7、系列步骤,但其个别步骤在更详细的层次上的实现可能不同的时候,我们通常要考虑用模板方法模式解决。,实例,几乎所有的应用系统,都需要系统登录控制的功能,有些系统甚至有多个登陆控制的功能。 以一个基于Web的企业级应用系统为例:,普通用户登录前台的登录控制功能,前台页面:输入用户名密码;提交登录请求,让系统进行登录控制 后台:从数据库获取登录人员的信息 后台:判断是否匹配 前台Action:匹配就转向首页,否则返回登录页面,显示错误提示信息,工作人员登录后台的登录控制功能,前台页面:输入用户名密码;提交登录请求,让系统进行登录控制 后台:从数据库获取登录人员的信息 后台:把从前台传递过来的密码数据使

8、用相应的加密算法进行加密运算。 后台:判断是否匹配 前台Action:匹配就转向首页,否则返回登录页面,显示错误提示信息,完全分开,作为两个独立模块实现? 添加一个功能“同一个编号同时只能登录一次”,两模块都要修改,麻烦。 实现太相似,重复,模板方法模式的结构,抽象模版(AbstractClass)角色有如下的责任: 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 定义并实现了一个模版方法。这个模版方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。,具体模

9、版(ConcreteClass)角色有如下的责任: 实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。 每一个抽象模版角色都可以有任意多个具体模版角色与之对应,而每一个具体模版角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。,下面的例子演示了数据库访问的模板方法,abstract class DataObject / Methods abstract public void Connect(); abstract public void Select(); abstract public void Process(); abst

10、ract public void Disconnect(); / The “Template Method“ public void Run() Connect(); Select(); Process(); Disconnect(); ,class CustomerDataObject : DataObject private string connectionString = “provider=Microsoft.JET.OLEDB.4.0; “ + “data source=c:nwind.mdb“; private string commandString; private Data

11、Set dataSet; / Methods public override void Connect( ) / Nothing to do ,public override void Select( ) commandString = “select CompanyName from Customers“; OleDbDataAdapter dataAdapter = new OleDbDataAdapter( commandString, connectionString ); dataSet = new DataSet(); dataAdapter.Fill( dataSet, “Cus

12、tomers“ ); public override void Process() DataTable dataTable = dataSet.Tables“Customers“; foreach( DataRow dataRow in dataTable.Rows ) Console.WriteLine( dataRow “CompanyName“ ); public override void Disconnect() / Nothing to do ,public class TemplateMethodApp public static void Main( string args ) CustomerDataObject c = new CustomerDataObject( ); c.Run(); ,优点 实现代码复用 缺点 算法骨架不容易升级(模板和子类是非常耦合的,如要对模板中的算法骨架进行变更,会影响子类变化),实例,咖啡冲泡法: 把水煮沸 用沸水冲泡咖啡 把咖啡倒进杯子 加糖和牛奶,茶冲泡法 把水煮沸 用沸水冲泡茶叶 把茶倒进杯子 加柠檬,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报