设计模式之-单例模式
- 格式:pptx
- 大小:136.46 KB
- 文档页数:10


设计模式模板方法模式JAVA
篇一:Java模板方法设计模式
1. 什么是回调函数
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java 的RMI都用到回调机制,可以访问远程服务器程序。回调函数包含下面几个特性:
1、属于工作流的一个部分;
2、必须按照工作流指定的调用约定来申明(定义);
3、他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;
2. 回调机制
回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。
java回调机制: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
回 调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。
实例:
1、回调类接口
/**
* 回调类接口
*
*/
public interface CallBack {
WORD整理版
专业资料学习参考 一、1. 设计模式一般用来解决什么样的问题: A.同一问题的不同表相
2. 下列属于面向对象基本原则的是: C.里氏代换
3. Open-Close原则的含义是一个软件实体:A.应当对扩展开放,对修改关闭.
4. 当我们想创建一个具体的对象而又不希望指定具体的类时,使用(A)模式。A.创建型
5. 要依赖于抽象不要依赖于具体。即针对接口编程不要针对实现编程:(D)依赖倒转原则
6. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。A, 委派
7. 设计模式的两大主题是( D ) D.系统复用与系统扩展
8. 单体模式中,两个基本要点(AB)和单体类自己提供单例A .构造函数私有 B.唯一实例
9. 下列模式中,属于行为模式的是( B ) B观察者
10. “不要和陌生人说话” 是( D )原则的通俗表述 D.迪米特
1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述 活动 ,也不描述 系统怎样开发 ,它只描述系统的 组成元素 及其相互的 交互协作 。
2.一个UML模型只描述了一个系统 要做什么 ,它并没告诉我们系统是 怎么做 。
3.接口是可以在整个模型中反复使用的一组行为,是一个没有 属性 而只有 方法 的类。
4.多重性指的是,某个类有 多 个对象可以和另一个类的 一 对象关联。
5.当一个类的对象可以充当多种角色时, 自身 关联就可能发生。
6.在泛化关系中,子类 可以替代 父类。后前者出现的可以相同地方。反过来却不成立。
7.最通常的依赖关系是一个类操作的 形构 中用到了 另一个类 的定义。
8.组成是 强类型 的聚集,因为聚集中的每个部分体只能属于 一个 整体。
2013年23期 科技置向导 ◇科技论坛◇ 设计模式及其在软件设计中的应用研究 侯文’,2 (1.同济大学中国上海200092;2.中国移动通信集团宁夏有限公司 宁夏¥1 ̄JII 750002) 【摘要】随着我国信息技术的发展,lntemet的发展为我国提供了全球范围的信息基础设施。而设计模式也随着信息技术的发展逐渐开始 形成。设计模式(Design pattern), ̄于一种应用广泛,经过分类编码以及代码设计的经验总结形式。运用设计模式是为了更好的将代码进行重复 使用.使代码更容易被他人理解。同时还保障了代码的可靠性。本文主要针对设计模式及其在软件设计中的应用展开研究和分析。 【关键词】设计模式;软件设计;应用研究 0.引言 设计模式主要是针对面向对象设计中反复出现的问题提出的解 决方案 设计模式是在1990年由Erich Gamma等人从建筑设计领域 导人到计算机科学中的概念。目前关于设计模式还存在许多争议,但 是设计模式能够提供一种讨论软件设计的公共语言.从而使其他的设 计师学到技术技术娴熟设计师的经验。除此之外,设计模式为软件的 重构提供了目标 1.设计模式概述 设计模式最早来源于建筑学.在1990年由Erich Gamma等人提 出.当时主要是用于提炼以及记录软件开发人员头脑或者文档中多次 出现的共性问题以及经过多次验证的成功解.明确表达了特定上下文 情形下产生的.具有特点的问题以及相应的解决方案间的关系【¨。设计 模式主要是关注了特定设计问题以及解决方案 而软件设计模式目前 主要是设计模式与另外的面向对象设计方式的关系.各自的优劣以及 适应的范围等 2.设计模式的分类 设计密匙目前主要分为行为型、创建型以及结构型。 行为型模式中又可分为下列几种模式:Memento备忘录模式(主要 是指在不破坏对象的条件下.捕获对象的内部状态.且在该象下保存 这个状态)、Iterator迭代器模式(主要是指提供一种方法的顺序访问聚 合对象的各种元素.且不会暴露对象的内部表示)、Interpreter解释器 模式(主要是指给定一个语言.定义文法的表示。且能够定义解释器, 解释器通常是用来解释语言中的句子)、Observer观察者模式(主要是 指定义对象间的依赖关系.当对象的状态出现改变时,所有依赖于它 的对象都能够得到自动更新的通知)以及Mediator中介者模式(通常 是指使用一个中介对象封装一系列的对象交互)等。 创建型模式又可分为下列几种模式:Prototype原型模式(使用原型 实例对于创建对象进行指定,在拷贝原型的基础上创建新的对象)、 Singleton单例模式(主要是指保证一类对应一个实例,并提供访问的 全局问点)、Builder建造模式(主要是指通过将复杂对象的建构与他表示 相进行分离.使同样的构建能够创建新的对象)、Abstract Factory抽象 工厂(主要是指提供一个创建一系列相关以及相互依赖对象的接口.无 需对他们的具体类型进行指定)以及Factory Method工厂方法(主要 是通过定义用于创建的接口.使子类决定实例化的类型.Factory Method能够使一类的实例化延迟到子类)。 结构型模式可分为下列几种模式:Flyweight享元模式、Composite 组合模式(主要是指将对象结合成为树形结构.以此表示部分整体的 关系.Composite能够使用户对单个对象以及组合对象的使用形成一 致性)、Bridge桥模式(主要是将抽象的部分与它的实现部分分离,使他 们独立的变化)、Facade外观模式(主要是为子系统中的接口提供一致 的界面.Facade提供了高层的接口.便于子系统使用)以及Decrator装 饰模式(主要是指动态的给对象增加一些额外的职责.对于增加功能 来说.Decrat0r模式更加灵活) 3.设计模式的选取 目前我国的软件设计模式的一般应用于两个层面中。首先,在对 系统的体系结构设计初步完成后.对系统有另外需求的组件以及模块 能够通过加人相应的设计模块使其更加灵活 且在软件系统设计的初 始阶段就需要使用设计模式对软件的体系结构进行设计[21 设计模式 自身具有一定的复杂性.因此很难将软件设计模式运用到具体软件设 238 计中.其一是因为没有有效的方式对设计模式的使用进行指导,其二 是相关软件设计师没有正确的把握住软件设计模式。 3.1设计模式的步骤 为了更好的运用元件设计模式.我们应当参照下列步骤进行: 第一是对需要解决的问题进行抽象.对类型进行适当的划分。第 二是要按照相关问题的类型选择合适的设计模式。第三是规划问题以 及匹配模式 将需要解决的问题与所选的设计模式进行对比,找出他 们的共性。对于需要解决的问题区域内需要综合考虑元素对应模式中 的类以及模式的和各种角色.当发现选择的设计模式并不合适,应立 即返回步骤三,重新进行设计。第四,将对选取的模式的进行变体,对 模式的原始结构进行扩展或者修改.更好的解决其中存在的问题。第 五.设计并且的细化所需要的软件体系的结构。第六是对设计质量进 行度量。 设计模式自身存在的形式化描述为软件设计人员获取自动模式 提供可可靠的依据.尤其是在结合了设计模式的形式化描述以及规范 匹配的基础上研究设计模式的自动化获取.这对于推进模式的发展具 有非常重要的意义 模式的自动获取需要建立在需求以及设计均需 形式化描述的前提下.对于多数非形式化描述的软件其实上是不使用 的。将设计模式的自动化获取与经验模式的选取相互结合,才能够更 好的推动模式的发展 3.2设计模式的选择 想要更好的选择软件设计模式.通常需要综合考虑更方面的因 素 第一、需要考虑到设计中哪些因素是可以变化的。第二、考虑设计 模式是如何解决设计中存在的问题的。第三、需要检查重新的原因是 什么。第四、需要浏览模式的意图。第五、需要研究目相似的模式。第 六、对于模式是怎样进行相互关联进行研究。 3.3设计模式的应用 选定了软件设计模式后.要怎样进行使用.需要按照科学的方法 进行。首先要将设计模式进行浏览。其次研究协作部分、结构部分以及 参与者部分。第三,观察代码示例部分,观察模式代码形式的案例H。第 四.选择的模式参与者的名字.使得他们在应用上下文中具有明确的 意义。第五是需要定义类。第六是在定义模式中专用于应用的操作名 称。更好的实现模式中的责任与协作的操作。 4。结语 近年来.面向对象领域获得的最大成就就是设计模式概念的提出 以及设计模式的发展。设计模式的适用性逐渐得到了发掘,由于其表 达清楚而简洁.受到了广泛的重视。随着我国面向对象理论的发展,软 件设计模式将能够得到更加完善的发展。 【参考文献】 [1]G Vanmeerbeeck,P.Schaumont,S.Vem ̄de,M.Engels,and L Bolsens.Hardware, Software Partitioning of Embedded Sy ̄em in OCAPI-x1.Proc.of the Ninth Int. Symposium on Hardware/Software Codesign(CODES 2009),2009,(22):26—29. [2]姜昌华,胡幼华,杨旭丽,张婕洁.一个基于遗传算法的仿真优化包的设计与实 现fA].系统仿真技术及其应用(第7卷)——2O10系统仿真技术及其应用学术交 流会论文选编fC].2010,(12):16—19. f3]苏飞,张能立,王紫绮,万小林.面向对象设计模式在B/S架构Web应用中的运 用Ⅲ武汉理工大学学报(信息与管理工程版),2009,(08):09—1 1. 『4]胡启平,刘萍,赵云飞,章临风.Mobile Agent—Concordia的体系结构及关键技术 『J1.武汉理工大学学报馆息与管理工程版),2009,(04):05—08.
总复习题
复习参考资料:
1. GoF 设计模式
2. 设计模式解析
3. 易学设计模式
4. 大话设计模式
5. 深入浅出设计模式
以参考资料为主,模拟试题1—5中有些题答案在一些附加资料中
模拟试题1
一、 选择题(分值20)
1。 设计模式一般用来解决什么样的问题( )
A。同一问题的不同表相 B不同问题的同一表相
C.不同问题的不同表相 D.以上都不是
2. 下列属于面向对象基本原则的是( )
A。继承 B.封装 C.里氏代换 D都不是
3. Open—Close原则的含义是一个软件实体( )
A。应当对扩展开放,对修改关闭。
B.应当对修改开放,对扩展关闭
C。应当对继承开放,对修改关闭
D.以上都不对
4。 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式.
A.创建型 B。结构型 C行为型 D。以上都可以
5。 要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述
A. 开—闭原则
B. 接口隔离原则
C。 里氏代换原则
D。 依赖倒转原则
6。 依据设计模式思想,程序开发中应优先使用的是( )关系实现复用。
A, 委派 B.继承 C创建 D。以上都不对
7。 设计模式的两大主题是( )
A.系统的维护与开发 B 对象组合与类的继承
C。系统架构与系统开发 D。系统复用与系统扩展
8. 单体模式中,两个基本要点( )和单体类自己提供单例
A .构造函数私有 B.唯一实例
C.静态工厂方法 D.以上都不对
9. 下列模式中,属于行为模式的是( )
A.工厂模式 B观察者 C适配器 以上都是 10。 “不要和陌生人说话” 是( )原则的通俗表述
A.接口隔离 B。里氏代换 C.依赖倒转 D。迪米特
二、 填空题(分值20)