常见的java设计模式详解(附工程代码)

上传人:宝路 文档编号:47882134 上传时间:2018-07-05 格式:PPTX 页数:27 大小:1.11MB
返回 下载 相关 举报
常见的java设计模式详解(附工程代码)_第1页
第1页 / 共27页
常见的java设计模式详解(附工程代码)_第2页
第2页 / 共27页
常见的java设计模式详解(附工程代码)_第3页
第3页 / 共27页
常见的java设计模式详解(附工程代码)_第4页
第4页 / 共27页
常见的java设计模式详解(附工程代码)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《常见的java设计模式详解(附工程代码)》由会员分享,可在线阅读,更多相关《常见的java设计模式详解(附工程代码)(27页珍藏版)》请在金锄头文库上搜索。

1、Java 设计模式开 源 改 变 人 生常见的设计模式常见的设计模式 创建型设计模式 结构型设计模式 行为型设计模式开 源 改 变 人 生创建型设计模式创建型设计模式 之之 单例模式单例模式概念:只能创建一个类实例的构建对象的方式。 步骤:1).私有化熟性。 2).私有化构造方法。 3).提供一个返回该类对象的静态方法。 方式:懒汉模式和饿汉模式 提高单例模式的性能和安全问题开 源 改 变 人 生public class SingletonHangry /1.私有化静态熟悉,使得在类加载器在加载该类的时 候,这个变量就被实例化 private static SingletonHangry si

2、ngleTon = new SingletonHangry(); /2.私有化构造方法,是指对外透明,外界就不能通过 new关键字创建新对象并为该类的变量赋值 private SingletonHangry() /3.提供一个静态方法,为外界调用,以返回一个该类 的实例。 public static SingletonHangry getInstence() return singleTon; 开 源 改 变 人 生懒汉模式本质就是延迟加载,但是有线程不同步的缺陷 饿汉模式线程安全但是性能较低 线程加锁, if(singleTon = null) synchronized (Singleton

3、.class) singleTon = new Singleton(); 双重加锁 if(singleTon = null) synchronized (Singleton.class) if(singleTon = null) singleTon = new Singleton(); 使用最简单最快速最安全的方式 private final static SingletonFinal SINGLETON = new SingletonFinal();开 源 改 变 人 生创建型设计模式创建型设计模式 之之 工厂方法模式工厂方法模式概念:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类

4、 当中去完成。 具体意义:核心工厂类不再负责产品的创建,而是成为一个抽象工厂角色 ,它仅负责具体工厂子类必须实现的接口。这样进一步抽象化的好处是 使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的 产品。 角色: 抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。 任何在模式中创建的对象的工厂类必须实现这个接口。 具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工 厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建 产品对象。 抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是 产品对象的共同父类或共

5、同拥有的接口。 具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义 的接口。开 源 改 变 人 生创建型设计模式创建型设计模式 之之 工厂方法模式工厂方法模式 类图开 源 改 变 人 生创建型设计模式创建型设计模式 之之 简单工厂模式简单工厂模式感念:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。本质:一个工厂类根据传入的参数,动态决定应该创建哪一个产品类( 这些产品类继承自一个父类或接口)的实例。 角色: 工厂(Creator)角色:简单工厂模式的核心,它负责实现创建所有 实例的内部逻辑。工厂类可以被直接调用,创建所需的产品对象。 抽象产品(Pro

6、duct)角色:简单工厂模式所创建的所有对象的父类 ,它负责描述所有实例所共有的公共接口。具体产品(Concrete Product)角色:是简单工厂模式的创建目标 ,所有创建的对象都是充当这个角色的某个具体类的实例。 缺点:由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配 原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能 是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。开 源 改 变 人 生创建型设计模式创建型设计模式 之之 简单工厂模式简单工厂模式工厂方法模式比简单工厂优越,因为他遵循了软件设计的高内聚,模块 化责任分配的原则。工厂类不需要改变,如果需要一个新

7、的产品,只需 要放入新产品的“原料”(也就是增加一个抽象类的具体实现类,并切 增加一个生成该类的工厂),然后就能从具体工厂总拿出新产品,使得 软件有很好的可扩充性。 对于简单工厂,如果要新曾一个产品,就要修改工厂类。开 源 改 变 人 生创建型设计模式创建型设计模式 之之 抽象抽象 工厂模式工厂模式概念和意义:抽象工厂是对工厂方法的再次抽象,将对产品的创建升级 成对产品类型的创建,那么我们就可以从该模式中获取某一类型的产品 ,然后从该类型的产品中获取该类型的具体产品,从而实现产品创建的 高度抽象。这么以来,我们能从工厂中获取的产品的范围更广。 角色: 抽象工厂:负责产品族的声明,这些产品族由其

8、实现类实现。 抽象产品:目标产品族,由具体工厂实现其要返回的子类的具体类型以 此实现产品族的派生功能。 具体工厂:分类实现抽象工厂中声明的产品族产品,一个具体的工厂只 生产某个产品族的一个子类型的产品 具体产品:产品的最终目标。由具体工厂以抽象工厂中声明的产品族决 定其产品类型。 优点:。意义就是优点。开 源 改 变 人 生创建型设计模式创建型设计模式 之之 抽象抽象 工厂模式工厂模式 类图开 源 改 变 人 生结构型设计模式结构型设计模式 之之 门面模式门面模式 概念:为所有的子系统提供一个统一对外的接口,外界只需要和这个 借口交互,就可以访问到所有子系统的数据和方法。 意义:统一接口。使用

9、户对一个内部逻辑比较复杂的子系统有一个简 单的使用操作,这个门面就充当一个缺省视图角色,子系统的具体流 程被封装起来,使用者不需知道,只和门面交互即可。开 源 改 变 人 生结构型设计模式结构型设计模式 之之 适配器模式适配器模式概念:将一个类的接口转换成客户希望的另外一个接口。 意义:通过转换接口,使得原本由于接口不兼容而不能一起工作的那些 类可以一起工作。做法是将类自己的接口包裹在一个已存在的类中。 适配器模式的两种情况:对象适配器模式,类适配器模式 对象适配器模式 适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包 裹对象的物理实体。 类适配器模式 这种适配器模式下,适配器继承

10、自已实现的类。它适用于当客户在接 口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个 实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。开 源 改 变 人 生结构结构型设计模式型设计模式 之之 适配器模式适配器模式 角色Target:目标抽象类,它定义了客户要使用的特定的接口。 Adapter:适配器类,将原角色改装成为目标接口后的对象。 Adaptee:适配者类,需要转换的已有的接口。 使用场景当客户端需要一个Target类型的对象作为输入时,其待满足的业务逻辑 在Adaptee中,但是客户端又不支持Adaptee类型的输入,那么就可以 引入一个实现了Target接口同时又

11、继承了Adaptee类的Adapter类,用 该类的对象做输入,一举两得。 对象适配器和类适配器比较由于java是单继承语言,如果客户端需要输入的对象是要包含多个待适配 类的业务逻辑的,那类适配器的局限性就凸显出来了。所以,对象适配 器是类适配器的改进。通过类之间的组合关系,在适配器类中引入多个 需要适配的类的引用即可。开 源 改 变 人 生结构结构型设计模式型设计模式 之之 适配器模式适配器模式 类图开 源 改 变 人 生行为型设计模式行为型设计模式 之之 策略模式策略模式概念和意义 传统编程中,当遇到不同情况需要进入同等级但是内容不同的业务逻辑 时,需要用到if . else等分支来判断。

12、策略模式的好处在于,将这些同等 级但是不同内容的业务逻辑分别封装在独立的类中,与系统隔离,进行 独立维护。 角色 抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 具体策略角色:包装了相关的算法和行为。 环境角色:持有一个策略类的引用,最终给客户端调用。 用法 将公共方法抽象到顶层策略接口当中,具体在其策略实现类中实现。 然后在环境类中保留顶层策略的引用,只要在客户端实现了环境类, 那么就可以通过这个引用访问到具体的策略实现类。开 源 改 变 人 生行为型设计模式行为型设计模式 之之 策略模式策略模式优点 提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更 灵活(算法

13、独立(独立于环境类中),可以任意扩展)。 避免程序中使用多重条件转移语句,取代if,使系统更灵活,并易于扩展和维 护。 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。(关于GRASP原 则,请参考 http:/ ml) 缺点 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的 类的数量开 源 改 变 人 生行为型设计模式行为型设计模式 之之 策略模式策略模式 类图开 源 改 变 人 生结构型设计模式结构型设计模式 之之 桥接模式桥接模式概念和意义 在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继 承关系,从而使两者可以相对独立地变化的设计模式。桥接模式最终 实现的目标是系统中类与类直接解耦,以达到开放自如的设计风格。 关键点:抽象化、实现化、以组合和聚合取代继承来达到解耦的目的 (最终目的就是解耦) 图解开 源 改 变 人 生结构型设计模式结构型设计模式 之之 桥接模式桥接模式根据飞机的用途将其分为空运和货运,于是根据用途抽象出一个飞机 类。根据根据的制造商分为空客和播音,于是根据制造商抽象出一个 制造商类。这两种抽象就是桥接模式的抽象化。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号