第十九讲 设计模式(Design Patterns)

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
面向侧面的程序设计 方林博士 本文下载地址:
HE Fixed Assets Manage System
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
MVC Servlet与MVC设计模式.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
J2EE Struts 和Spring 的区别.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
第14章 c++中的代码重用.
Object Oriented Analysis and Design
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
第9章 单例模式 Website:
Design Pattern (2) 设计模式(2) Institute of Computer Software 2018/9/21
Design Patterns Lecture 4.
Design Pattern (3) 设计模式(3) Institute of Computer Software 2018/11/8
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
Arena System Technology Architecture 系统技术架构 1、Database V2(Lotus Notes)V3(Oracle8i) 2、Application Server SilverStream2.53 (Java as server side programming.
第六章 窗口系统和用户界面管理系统 山东大学计算机学院.
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
周宇 南京航空航天大学 软件设计模式与体系结构 周宇 南京航空航天大学
走进编程 程序的顺序结构(二).
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
Visual Studio Team System 简介
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
CPU结构和功能.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
第11章 系统结构与包模型模型.
简单工厂模式.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
实验1 信息系统分析与设计工具安装.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
Aspect Oriented Programming
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
iSIGHT 基本培训 使用 Excel的栅栏问题
Chapter 18 使用GRASP的对象设计示例.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Delphi 7.0开发示例.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

第十九讲 设计模式(Design Patterns) 基本概念 基本要素 模式分类 实例

设计模式 ——基本概念 在面向对象的编程中,软件编程人员更加注重现有代码的重用性和可维护性。 设计模式使人们可以更加简单方便地重用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。 A pattern is an idea that has been useful in one practical context and will probably be useful in others. --Martin Fowler

设计模式 一般而言,一个模式有四个基本要素 模式名称(pattern name) 问题(problem) 解决方案(solution) ——基本要素 一般而言,一个模式有四个基本要素 模式名称(pattern name) 问题(problem) 解决方案(solution) 效果(consequences)

模式名称(pattern name) 设计模式 ——基本要素 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。

问题(problem) 设计模式 ——基本要素 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。

设计模式 解决方案(solution) ——基本要素 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

设计模式 效果(consequences) ——基本要素 描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。

设计模式 ——模式分类 创建型模式 抽象的实例化过程 结构型模式 如何组合类和对象以获得更大的结构 行为型模式 涉及到算法和对象间职责的分配

创建型模式 设计模式 Abstract Factory:抽象工厂 Builder:生成器 Factory Method:工厂方法 ——模式分类 创建型模式 Abstract Factory:抽象工厂 Builder:生成器 Factory Method:工厂方法 ProtoType:原型 Singleton:单实例

结构型模式 设计模式 ——模式分类 MVC :模型-视图-控制器 Adapter:适配器 Bridge:桥接 Composite:组成 Decorator:装饰 Facade:外观 Flyweight:享元 Proxy:代理

行为型模式 设计模式 ——模式分类 Chain of Responsibility:责任链 Command:命令 Interpreter:解释器 Iterator:迭代器 Mediator:中介者 Memento:备忘录 Observer:观察者 State:状态 Strategy:策略 Template Method:模板方法 Visotor:访问者

设计模式 ——实例:Singleton模式 意图 动机 考虑数据共享和封装,保证一个类仅有一个实例,并在提供各种公共操作的基础上提供一个该实例的全局访问方法。 动机 对于某些系统,有些类里封装了一些公共的、共享的信息,比如日志文件记录器,数据缓冲区等,如果允许这些类有多个实例,那么,很容易造成这些信息的完整性被破坏,或者,由于同步操作,会造成系统的性能降低。因此,对这些类,只允许一个实例存在。

设计模式 ——实例:Singleton模式 要想保证一个类只有一个实例,需要做到: 必须能够实例化这个类 必须阻止其它的类来随意实例化这个类 有了这个实例以后,需要提供一个该实例的全局访问方法,这和该实例的保存位置有关。

在下列情况下可使用Singleton模式: 当类只能有一个实例且客户可以从一个公共方法访问它时。 设计模式 ——实例:Singleton模式 适用性 在下列情况下可使用Singleton模式: 当类只能有一个实例且客户可以从一个公共方法访问它时。 当这个唯一实例应该是可通过子类继承来扩展的,并且客户应该无需更改代码就能使用一个子类的实例时。

设计模式 ——实例:Singleton模式 结构

示例二: SingletonTest.java 设计模式 ——实例:Singleton模式 示例一: public class Runtime { private static Runtime currentRuntime = new Runtime(); private Runtime(){//... } public static Runtime getRuntime() { return currentRuntime; ... 示例二: SingletonTest.java

设计模式 Singleton模式优点: ——实例:Singleton模式 比静态方法(类操作)更灵活:另一种封装单件功能的方式是使用静态方法。但是,使用静态方法需要考虑同步问题,也容易导致内存数据不一致的问题。

设计模式 ——实例:MVC模式 MVC概述 WEB应用的两种开发模式 MVC操作顺序 MVC优点 MVC的适用性

设计模式 ——实例:MVC模式 MVC概述 视图 控制器 模型 int value=1

MVC概述 设计模式 MVC模式最初使用SmallTalk开发,后来在Swing组件库中广泛应用。 该模式采用一个图形化对象并将其任务分解成三部分: 控制器:触发一个对组件的改变。 模型:提供修改、访问数据的方法。 视图:提供当前数据的直观显示。

设计模式 ——实例:MVC模式 JSP + JavaBean

Model1的主要特点 设计模式 ——实例:MVC模式 表现层用HTML或JSP。 JSP文件还负责所有的业务和处理逻辑 JSP直接用代码访问数据或JSP通过JavaBean存取数据。 以页面为中心,应用程序的业务逻辑和程序流程都在页面中出现。 JSP要跳转到别的页面,通过超级链接或Form表单的action实现。

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

JSP + JavaBean +Servlet 设计模式 ——实例:MVC模式 JSP + JavaBean +Servlet

MVC模型 设计模式 在一个典型的J2EE Web应用中,MVC设计模式包括三个部分: ——实例:MVC模式 模型(Model): 用于封装数据,一般是关系数据库或EJB。 视图(View): 数据的表现组件,通常就是JSP页面,也可以是GUI,可以有多个。 控制器(Controller): 接受用户动作,负责统一管理。一般是Servlet。

MVC模型 设计模式 在一个典型的企业级应用中,经常需要用多种类型的接口来支持多种类型的用户。 比如,一个网上商店可能需要: 为网上顾客提供HTML前端, 为无线用户提供WML前端, 为系统管理员提供JFC/Swing GUI, 为供应商提供基于XML的Web service。

MVC模型 设计模式 ——实例:MVC模式 企业信息系统 HTML View WML JFC/Swing XML-based 传统Web用户 无线用户 系统管理员 B2B用户

MVC模型:Model 设计模式 Model含有应用程序的功能核心,表示应用程序的状态,它不管View和Controller。 JavaBean就适合作为Model,可以用来设计应用程序的大部分业务逻辑,能与数据库或文件系统进行交互,负责维护应用程序的数据。

MVC模型:View 设计模式 ——实例:MVC模式 View把应用程序的数据通过界面展示给用户。 View可以读取Model的数据,但不可修改。 当用户修改Model数据时,会通知View,以便用户看到最新的数据信息。 JSP用于实现此目的,开发者不用知道也不必去关心数据库发生了什么变化或者业务逻辑的详细情况。 注意:JSP中应尽可能少地使用Java代码。

MVC模型:Controller 设计模式 ——实例:MVC模式 控制器的作用是处理请求、创建JavaBean或创建供JSP使用的对象。通常,控制器还决定把用户请求转交给哪一个界面组件(View)。 用于对用户的输入进行响应。 它创建Model并提供输入。 Servlet可同时兼有Java和HTML代码,可以接收来自客户端的HTTP请求,根据此请求决定创建哪些必要的JavaBean,并能把Model的数据修改通知View。

MVC操作顺序 设计模式 在控制器被用户触发时,它将把变化传达给模型; 模型改变该数据并将新数据推给适当的视图 视图接收新数据并以新的图像或表格形式显示数据。

MVC的优点 设计模式 将核心数据的存取、数据表示和控制逻辑三者分离开来,可针对多种用户设计多个视图,以便共享同样的企业数据模型。 Web设计人员可以集中于使用JSP来开发UI表示数据,而代码开发人员可以使用Servlet编写执行任务的代码,这样有利于缩短开发周期。

MVC的适用性 设计模式 ——实例:MVC模式 Web页面需要根据用户在运行时提供的信息进行动态定制。 Web站点上的信息需要经常变动。

设计模式 ——实例:MVC模式 用MVC模式实现用户登录验证 步骤: 1.需求分析 2.模型选择 3.设计数据库 4.配置数据源 5.编码实现

设计模式 ——实例:MVC模式 login.jsp Servlet main.jsp 数据库  JavaBean