`
BlogDown
  • 浏览: 213728 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java设计模式之综述篇

阅读更多

自从J2EE出现以来,就大大简化了在Java下的企业级开发。但是随着J2EE越来越普遍地被应用到各个领域中,开发者们渐渐意识到需要一种方法来标准化应用程序的开发过程,他们采用的方法是标准化应用程序的结构层。在结构层通常封装了一些独立于业务逻辑的复杂技术,以便在业务逻辑和底层的架构之间建立起弱连接。在个专题中将会介绍一些设计模式,通过利用这些设计模式,开发人员可以达到标准化和简化应用程序开发过程的目的。


应用程序结构和J2EE


J2EE是一个很成功的技术,它为一些基本的任务提供了一致的标准,例如数据库连接、分布式应用程序等。但是使用J2EE并不能保证开发人员开发出成功的应用程序。有些人认为J2EE本身就是一种框架技术,但是这种认识是不正确的,我们应该意识到J2EE并没有提供一个能够帮助开发人员开发出高质量应用程序的框架,因此很多有经验的开发人员通过利用设计模式来弥补这一缺项。


设计模式


在开发人员的圈子中,大家通过相互交流在开发过程中所遇到的问题以及解决方法来丰富整个圈子的经验。而设计模式就是在这样的情况下产生的。一个设计模式必然是针对某个特定的问题的,这个问题的解决方案以及这样解决问题产生的后果。在解决利用J2EE进行程序开发中出现的问题的过程中,人们把设计模式分为两类,一种是通用开发模式,一种是为了解决特定的J2EE问题的模式。下面让我们来看一看每一种类型的开发模式都包含了哪些内容。

J2EE设计模式

J2EE设计模式在过去几年中随着Java开发人员经验的不断成长而发展。这些设计模式是针对使用各种J2EE技术时可能出现的问题提出的,它们能够帮助开发人员构造出应用程序框架的要求。例如,Front Controller(前端控件)模式将servlet代码的开发转化为在图形用户界面下的开发。但是需要记住J2EE设计模型解决了那些在J2EE项目中最可能出现的问题。如果你在J2EE遇到的问题很特殊,很有可能没有相应的设计模型来解决它。

软件开发设计模式

软件开发设计模式又被分为两种,一种是通用的面向对象设计模式。例如工厂(Factory)模式是一种面向对象的设计模式,它将对象的创建封装起来,使对象能够重用,这样就可以减少程序占用的系统资源。而另一种是基于Java的设计模式,这些设计模式要么是和Java的语言特性结合得很紧,要么是面向对象技术在Java中的深化。不要以为软件设计模式相对独立于J2EE就认为它们不重要,通常它们比J2EE设计模式更重要。这是因为:

1)J2EE设计模式是近几年才出现的,并且在不断变化,而软件开发设计模式经过了长时间的考验,比前者更加成熟和完善;

2)有些J2EE设计模式是建立在某些软件开发设计模式之上的;

3)软件开发模式为J2EE设计模式提供了坚实的基础。它的应用将影响到整个结构的稳定性和可扩充性。

在实际应用中,设计模式并不是一段具体的代码。设计模式通常是在设计说明书中描述。将设计模式应用到系统中的真正挑战在于如何在系统中应用模式中的思想。这些思想必须被应用到恰当的环境中。

根据设计模式的所解决的问题,又可以分为以下几个类型:

· 创建类型:创建类型的模式都是用于创建类的实例。但是和通过new来创建实例不同,这些模式提供了更加灵活的方式,是程序能够根据特定的情况创建特定的类。

· 结构类型:结构类型的模式帮助开发人员将简单对象组合在一起以后的更加复杂的结构。

· 行为类型:行为类型的模式帮助开发人员控制类之间的通讯。

创建类型的模式

所有创建类型的模式都和如何有效地创建类的实例相关。在Java中,如果开发人员要生成一个类的实例,最简单的方法是使用new关键字:

MyFoo = new Foo();  // 生成一个Foo的实例



这种方法只能够在程序中生成固定的类。但是在很多情况下,程序需要根据不同的情况生成不同的类的实例,这就需要将实例的生成过程抽象到一个特殊的创建类中,由该类在运行时决定生成哪种类的实例。这样使得程序有更好的灵活性和通用性。

创建类型的模式包括:

· 工厂模式(Factory Pattern):根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,而这一组类有一个公共的抽象父类。

· 抽象工厂模式(Abstract Factory Pattern):抽象工厂模式也可以根据提供的数据生成一组类中某一个类的实例,而这一组类有一个公共的抽象父类。只不过它定义的是一个接口。

· 构造者模式(Builder Pattern):构造者模式将一个复杂对象的构造过程和它的表现层分离开来,这样类就可以根据不同情况展现出不同的表现方式。

· 原型模式(Prototype Pattern):原型模式通过对类的实例进行拷贝来创建新的实例。

· 单一模式(Singleton Pattern):根据单一模式实现的类只允许有一个是类,并且提供了一个全局指针来引用该实例。

结构类型的模式

结构类型的模式将类和对象组合起来,以构成更加复杂的结构。它又被划分为类模式和对象模式。类模式和对象模式之间的区别在于类模式通过继承关系来提供有效的接口;而类模式通过对象合成或将对象包含在其它对象中的方式构成更加复杂的结构。

结构类型的模式包括了以下模式:

· 适配器模式(Adapter Pattern):适配器模式可以将一个类的接口和另一个类的接口匹配起来。

· 桥梁模式(Bridge Pattern):桥梁模式对客户端程序提供一个固定的接口,但是允许开发人员变化实际的实现类。这样开发人员就可以将接口是具体的实现类分离开来。

· 复合模式(Composite Pattern):复合模式可以将多个对象进行复合,其中的每个对象可以是简单对象,也可以是复合对象。

· 代理模式(Proxy Pattern):代理模式利用一个简单的对象替代一个复杂的对象,当复杂对象在需要的时候才会被加载到系统中,这样可以节约系统资源,提高系统的响应速度。在网络环境中这种模式很有用处。

· 修饰模式(Decorator Pattern):通过修饰模式,开发人员可以在运行时将特定的功能绑定在对象上。

· 轻量模式(Flyweight Pattern):轻量模式通过将对象中的一部分数据保存在对象外,在调用对象中的方法时再将这些数据传回对象。这样做可以减少大量比较简单的对象占用的空间。

· 正面模式(Fa?ade Pattern):正面模式将复杂的类层次结构组织起来,通过一个简单的接口来获得层次结构中的数据。

行为类型的模式

行为类型的模式主要是那些处理对象之间通讯的模式,该类型的包括以下模式:

· 观测者模式(Observer Pattern):观测者模式可以在发生变化时将变化通知多个类。

· 中介模式(Mediator Pattern):中介模式可以通过一个中间类来控制若干个类之间的通讯,并且这些类相互之间不需要了解对方的信息。

· 回忆模式(Memento Pattern):回忆模式可以在不破坏对象封装性的前提下保存和恢复对象的内部状态。

· 职责链模式(Chain of Responsibility):职责链模式将请求传递给一组对象,只有特定的对象才会处理该请求。这样就进一步削弱类之间的联系。

· 命令模式(Command Pattern):命令模式将请求传递给特定的对象,这样客户端即使在不知道服务器端如何处理请求的情况下也可以发送请求。

· 模板模式(Template Pattern):模板模式提供了对算法的抽象定义。

· 策略模式(Strategy Pattern): 策略模式定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。

· 访问者模式(Visitor Pattern):访问者模式通过一个访问类来访问其他类中的数据。

· 状态模式(State Pattern):状态模式将一个类实例的变量保存在独立的内存空间中。

· 迭代模式(Iterator Pattern):迭代模式在不知道数据的内部表现形式的前提下,通过标准的接口来遍历数据集合中的数据。
分享到:
评论

相关推荐

    基于JAVA的模拟ATM系统的设计与实现【文献综述】.pdf

    文献综述 计算机科学与技术 基于 JAVA 的模拟 ATM 系统的设计与实现 ATM 是 Automatic Teller Machine 的缩写,即自动柜员机。它是有计算机控制的持 卡人自我服务型的金融专用设备。 ATM 机可以向持卡人提供提款、...

    se Java 设计架构

    第六章 设计模式的概念与几种常用的J2EE设计模式 第一节 设计模式的概念………………………………………25 第二节 工厂创建模式与单例模式……………………………27 第三节 使用工厂模式实现DAO ……………………...

    Java服务器程序设计

    用java进行客户端的applet (小程序)开发的技术已广为使用,而用java进行服务器端的servlet(服务器小程序)开发则尚需揭开其神秘的面纱,本书正是基于这样的目的编写的。全书从java服务器的体系结构、开发工具和...

    北京中科信软 面向对象设计模式培训

    深刻理解重构和设计模式之间的关系,以及如何借助设计模式重构软件系统; 11. 创建型模式 12. Singleton、Factory Method、Builder、Prototype、Abstract Factory 13. Monostate、Registry、Factory、Plugin 14. ...

    基于Java网上购物商城毕业论文.pdf

    多的人所接受,越来越多的网络商店走入了大众的生活,对电子商务网站的设计和实现技术要求也越来越高,网上手机销售也成为商家新的运作模式。本网站主要以 MySQL为数据库开发平台,采用JSP开发技术实现前台用户页面...

    JAVA语言考试系统的设计与实现(WORD论文+源代码+文献综述+外文翻译+开题报告).zip

    JAVA语言考试系统的设计与实现(WORD论文+源代码+文献综述+外文翻译+开题报告) 摘要: 随着信息技术的广泛使用,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要...

    基于Java的疫情防控管理信息系统的设计与实现【附源码】

    针对疫情防控管理信息系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现疫情防控管理信息系统和部署运行使用它。

    一种基于Java的在线购物系统的设计与实现(含源码和文章说明和数据库)

    本系统——网上图书超市采用JSP+JavaBean+ SQL Server数据库三层模式设计并实现。详细地阐述了系统的需求分析、系统总体架构、详细设计以及模块的实现过程,主要实现了以下模块功能:会员注册、登录/注销;用户管理...

    开题报告-基于Java的酒店客房管理系统的设计与实现.doc

    开题报告-基于Java的酒店客房管理系统的设计与实现 毕业设计开题报告 课 题 名 称:基于Java的酒店客房管理系统的 设计与实现 姓 名: 班 级: 指 导 教 师: 所 在 系 部: "毕业设计的 "1.毕业设计的内容: " ...

    开题报告-基于JAVA的俄罗斯方块游戏设计与实现.doc

    毕业设计开题报告 计算机科学与技术 基于JAVA的俄罗斯方块游戏设计与实现 1. 综述本课题国内外研究动态,说明选题的依据和意义 本课题国内外动态: 学校现已开设的课程有C语言、VB、C++,自己本身自学了Java,就目前...

    java接口与内部类教学PPT

    接口-应用示例(设计模式) 7.内部类-简介 8.内部类-作用 9.内部类-特殊语法规则 10.内部类-安全性 11.内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述

    基于JAVA的俄罗斯方块游戏设计与实现【开题报告】.pdf

    1 开题报告 计算机科学与技术 基于 JAVA 的俄罗斯方块游戏设计与实现 一、 综述本课题国内外研究动态,说明选题的依据和意义 本课题国内外动态: 学校现已开设的课程有 C 语言、VB、C++,自己本身自学了 Java,就...

    毕业设计-JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)

    随着信息技术的广泛使用,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要。在网络技术逐渐渗入社会生活各个层面的今天,采用网络考试是一个很重要的方向。目前...

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)-jsp-java源程序代码.rar

    随着信息技术的广泛使用,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要。在网络技术逐渐渗入社会生活各个层面的今天,采用网络考试是一个很重要的方向。目前...

    基于java的语言考试系统设计与实现毕业设计(说明报告+源代码+文献综述+外文翻译+开题报告)

    计算机毕业设计 随着信息技术的广泛使用,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要。在网络技术逐渐渗入社会生活各个层面的今天,采用网络考试是一个很...

    45张史上最全的IT工程师技能图谱(高清).zip

    设计模式秘籍图谱 架构师技能图谱 机器学习技能图谱 JVM垃圾回图谱 Java并发图谱 Java集合图谱 Java集合类图 Java List类图 Java Map类图 Java Set类图 Java TCP IP Hadoop 家族技能图谱 大数据工程师技能图谱 ...

    Java数据编程指南

    使用服务程序进行数据访问 引言 使用服务程序的数据库连接 范例应用程序 JDBC驱动器之结语 小结 第15章 JSP JSP与服务程序 JSP与ASP 实现JSPs JavaServer Page范例 JavaBeans综述...

    基于Java的网上购书系统参考论文

    毕业设计(论文)要求及原始数据(资料): 1.综述目前国内成熟的购书平台的应用; 2.深入了解B/S架构开发...说明:基于Java开发的系统参考论文,有数据库设计,用例图等等,仅仅学习参考!希望的分享对你们有帮助。

    JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)

    随着信息技术的广泛使用,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要。在网络技术逐渐渗入社会生活各个层面的今天,采用网络考试是一个很重要的方向。目前...

Global site tag (gtag.js) - Google Analytics