ch设计模式(DesignPatterns)_第1页
ch设计模式(DesignPatterns)_第2页
ch设计模式(DesignPatterns)_第3页
ch设计模式(DesignPatterns)_第4页
ch设计模式(DesignPatterns)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、q 基本概念q 基本要素q 模式分类q 实例第十九讲第十九讲 设计模式(设计模式(Design Patterns)n在面向对象的编程中,软件编程人员更加注重现有代码的重用性和可维护性。n设计模式使人们可以更加简单方便地重用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式设计模式基本概念基本概念一般而言,一个模式有四个基本要素一般而言,一个模式有四个基本要素n模式名称(pattern name)n问题(problem)n解决方案(solution)n效果(consequences)设计模式设计模式基本要素基本要素模式名称(模式名称(patter

2、n name)一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。设计模式设计模式基本要素基本要素设计模式设计模式基本要素基本要素问题(问题(problem)描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有

3、时候,问题部分会包括使用模式必须满足的一系列先决条件。设计模式设计模式基本要素基本要素解决方案(解决方案(solution)描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。设计模式设计模式基本要素基本要素效果(效果(consequences)描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果

4、大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。设计模式设计模式模式分类模式分类n创建型模式创建型模式抽象的实例化过程n结构型模式结构型模式如何组合类和对象以获得更大的结构n行为型模式行为型模式涉及到算法和对象间职责的分配设计模式设计模式模式分类模式分类nAbstract Factory:抽象工厂nBuilder:生成器nFactory Method:工厂方法nProtoType:原型nSingleton:单实例单实例设计模式设计模式模式分类模式分

5、类nMVC :模型模型-视图视图-控制器控制器nAdapter:适配器nBridge:桥接nComposite:组成nDecorator:装饰nFacade:外观nFlyweight:享元nProxy:代理设计模式设计模式模式分类模式分类nChain of Responsibility:责任链nCommand:命令nInterpreter:解释器nIterator:迭代器nMediator:中介者nMemento:备忘录nObserver:观察者nState:状态nStrategy:策略nTemplate Method:模板方法nVisotor:访问者设计模式设计模式实例:实例:意图意图考虑数

6、据共享和封装,保证一个类仅有一个实例,并在提供各种公共操作的基础上提供一个该实例的全局访问方法。要想保证一个类只有一个实例,需要做到:n必须能够实例化这个类n必须阻止其它的类来随意实例化这个类有了这个实例以后,需要提供一个该实例的全局访问方法,这和该实例的保存位置有关。设计模式设计模式实例:实例:设计模式设计模式实例:实例:适用性适用性在下列情况下可使用Singleton模式:n当类只能有一个实例且客户可以从一个公共方法访问它时。n当这个唯一实例应该是可通过子类继承来扩展的,并且客户应该无需更改代码就能使用一个子类的实例时。 结构结构设计模式设计模式实例:实例:设计模式设计模式实例:实例:示例

7、一:示例一:public class Runtime private static Runtime currentRuntime = new Runtime();private Runtime()/.public static Runtime getRuntime() return currentRuntime; . 示例二:示例二: SingletonTest.javaSingletonSingleton模式优点:模式优点:n对唯一实例的受控访问:对唯一实例的受控访问:因为Singleton类封装它的唯一实例,所以它可以严格地控制客户怎样以及何时访问它。n允许对操作和表示的精化:允许对操作和

8、表示的精化: Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。n比静态方法(类操作)更灵活:比静态方法(类操作)更灵活:另一种封装单件功能的方式是使用静态方法。但是,使用静态方法需要考虑同步问题,也容易导致内存数据不一致的问题。设计模式设计模式实例:实例:vMVC概述概述vWEB应用的两种开发模式应用的两种开发模式vMVC操作顺序操作顺序vMVC优点优点vMVC的适用性的适用性设计模式设计模式实例:实例:视图控制器控制器模型int value=1MVC概述概述设计模式设计模式实例:实例:nMVC模式最初使用Small

9、Talk开发,后来在Swing组件库中广泛应用。n该模式采用一个图形化对象并将其任务分解成三部分:1.控制器控制器:触发一个对组件的改变。2.模型模型:提供修改、访问数据的方法。3.视图视图:提供当前数据的直观显示。MVC概述概述设计模式设计模式实例:实例:设计模式设计模式实例:实例:JSP + JavaBeanModel1的主要特点n表现层用HTML或JSP。nJSP文件还负责所有的业务和处理逻辑nJSP直接用代码访问数据或JSP通过JavaBean存取数据。n以页面为中心,应用程序的业务逻辑和程序流程都在页面中出现。nJSP要跳转到别的页面,通过超级链接或Form表单的action实现。设

10、计模式设计模式实例:实例:设计模式设计模式实例:实例:nJSP不仅负责表示逻辑,还负责控制逻辑n大型项目中如果采取此方式,每个开发小组必须了解其它小组开发的所有页面的详细信息,否则对页面的修改将会破坏应用程序的流程。n当输出设备不同时(比如股票信息输出到显示器、手机、PDA上),需要采用不同的输出格式(即不同的视图),那么用此方式JSP不仅要判定设备的类型,而且要为不同类型的设备提供正确的显示格式。Model1的缺点设计模式设计模式实例:实例:JSP + JavaBean +Servlet设计模式设计模式实例:实例:MVC模型模型在一个典型的J2EE Web应用中,MVC设计模式包括三个部分:

11、n模型(模型(Model): 用于封装数据,一般是关系数据库或EJB。n视图(视图(View): 数据的表现组件,通常就是JSP页面,也可以是GUI,可以有多个。n控制器(控制器(Controller): 接受用户动作,负责统一管理。一般是Servlet。n在一个典型的企业级应用企业级应用中,经常需要用多种类型的接口来支持多种类型的用户。n比如,一个网上商店可能需要:1.为网上顾客提供HTML前端,2.为无线用户提供WML前端,3.为系统管理员提供JFC/Swing GUI,4.为供应商提供基于XML的Web service。设计模式设计模式实例:实例:MVC模型模型HTMLViewWMLVi

12、ewJFC/SwingViewXML-basedView企业信息系统企业信息系统传统传统Web用户用户无线用户无线用户系统管理员系统管理员B2B用户用户设计模式设计模式实例:实例:MVC模型模型nModel含有应用程序的功能核心,表示应用程序的状态,它不管View和Controller。nJavaBean就适合作为Model,可以用来设计应用程序的大部分业务逻辑,能与数据库或文件系统进行交互,负责维护应用程序的数据。MVC模型:模型:Model设计模式设计模式实例:实例:MVC模型:模型:View设计模式设计模式实例:实例:nView把应用程序的数据通过界面展示给用户。nView可以读取Mod

13、el的数据,但不可修改。n当用户修改Model数据时,会通知View,以便用户看到最新的数据信息。nJSP用于实现此目的,开发者不用知道也不必去关心数据库发生了什么变化或者业务逻辑的详细情况。n注意:JSP中应尽可能少地使用Java代码。MVC模型:模型:Controller设计模式设计模式实例:实例:控制器的作用是处理请求、创建JavaBean或创建供JSP使用的对象。通常,控制器还决定把用户请求转交给哪一个界面组件(View)。n用于对用户的输入进行响应。n它创建Model并提供输入。nServlet可同时兼有Java和HTML代码,可以接收来自客户端的HTTP请求,根据此请求决定创建哪些

14、必要的JavaBean,并能把Model的数据修改通知View。1.在控制器被用户触发时,它将把变化传达给模型;2.模型改变该数据并将新数据推给适当的视图3.视图接收新数据并以新的图像或表格形式显示数据。MVC操作顺序操作顺序设计模式设计模式实例:实例:n将核心数据的存取、数据表示和控制逻辑三者分离开来,可针对多种用户设计多个视图,以便共享同样的企业数据模型。nWeb设计人员可以集中于使用JSP来开发UI表示数据,而代码开发人员可以使用Servlet编写执行任务的代码,这样有利于缩短开发周期。MVC的优点的优点设计模式设计模式实例:实例:nWeb页面需要根据用户在运行时提供的信息进行动态定制定制。nWeb站点上的信息需要经常变动变动。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论