JavaEE之设计模式

前言

笔者最近再看李刚编著的轻量级JavaEE(ssh),看到了设计模式以及软件的构架设计这一部分,个人感觉十分重要,所以写一遍博客进行总结加强印象。

设计模式的概念

设计模式是对处于特定环境下,经常出现的某类软件开发问题的,一种相对成熟的设计方案,通过设计模式就可以直接运用前人成功的经验,从而避免重复设计。
设计模式常常被分成三类:
创建型:创建对象时,不再直接实例化对象;而是根据特定的场景,由程序来确定创建对象的方法,从而保证更高的性能、更好的构架优势。创建型模式主要由简单工厂模式、工厂模式、抽象工厂模式、单例模式、生成器模式何原型模式。
结构型:用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式、桥接模式、组合器模式、装饰器模式、门面模式、享元模式和代理模式。
行为型:用于帮助系统间各对象的通信,以及如何控制复杂系统中的流程。行为型模式主要有命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式和访问者模式。

几个常见的设计模式

单例模式
这是一个创建型设计模式。有时候,允许自由创建某一类的实例没有意义,还可能造成系统的性能下降。如果一个类始终只能创建一个实例,则这个类被称为单例类。
对于spring框架而言就是在配置bean时指定scope=“singleton”来配置。Spring推荐将所有的业务逻辑组件、DAO组件、数据源组件等配置成单例的行为模式,因为这些组件无须保留任何用户状态,故所有客户都可以共享这些业务逻辑组件、DAO组件。
单例模式有主要以下两个优势:
1.减少创建Java实例而产生的系统开销。
2.便于系统跟踪单个Java实例的生命周期、实例状态。

简单工厂
对于一个典型的Java应用而言,应用之中各实例之间存在复杂的调用关系(Spring把这种调用关系称为依赖关系)。将多个类交给工厂类来生成的设计方式被称为简单工厂模式。
使用简单工厂模式的优势是让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可;从而避免了对象的调用者与对象的实现类以硬编码方式耦合,以提高系统的可维护性可扩展性。
缺陷是当产品修改时,工厂类也需要做出相应的修改。

抽象工厂
如果工厂直接生产被调用对象,那就是简单工厂模式;如果工厂生产工厂对象,那就会升级成抽象工厂模式

代理模式
代理模式是一种应用非常广泛的设计模式,当客户端代码需要调用某个对象时,客户端实际上也不关心是否能准确得到该对象,它只需要一个能提供该功能的对象即可,此刻就可返回该对象的代理。

命令模式
考虑这样一种场景:某个方法需要完成某一个功能,完成这个功能的大部分步骤已确定了,但可能有少量具体步骤无法确定,必须等待该执行方法才可以确定。
命令模式将发出请求的对象和执行请求的对象解耦,在被解耦的两者之间是通过命令对象进行沟通的。

策略模式
策略模式用于封装系列的算法,这些算法通常被封装在一个被称为Context的类中,客户端程序可以自由选择其中一种算法,或让Context为客户端选择一个最佳的算法----使用策略模式的优势是为了支持算法的自用切换。

门面模式
门面模式可为大量的类提供一个简化的接口,从而简化访问这些类的复杂性,有时候这种简化可能降低访问这些底层类的灵活性,但除了要求特别苛刻的客户端之外,它通常都可以提供所需的全部功能,当然,用户也可以直接访问底层的类和方法。

桥接模式
桥接模式是一种结构模式,它主要应对的是,由于实际的需求,某个类具有两个或两个以上的维度变化,如果只是使用继承将无法实现这种需要,或者使得设计变得相当臃肿。
为解决这个问题,可以使用桥接模式,桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后提供一个管理类组合不同维度的变化,通过这种组合来满足业务的需要。

观察者模式
观察模式定义了对象间的一对多依赖关系,让一个或多个观察者对象观察一个主题对象。当主题对象的状态发生变化时,系统能通知所有的依赖于此对象的观察者对象,从而设计的观察者对象能够自动更新。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值