[学习难度:★★☆☆☆,使用频率:★★★★★] 简单工厂模式虽然简单,但存在一个很严重的问题.当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背"开闭原则",如何实现增加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍第二种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统运行日志记录器(Logger),该记录器可以通过多种途径保存系统的运行日志,如通过文件记录或数据库记录,用户可以…
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂方法模式>中提到,在工厂方法模式中一种工厂只能创建一种具体产品.而在抽象工厂模式中一种具体工厂可以创建多个种类的具体产品. 抽象工厂模式 抽象工厂模式介绍 抽象工厂模式(Factory Method Pattern)中,抽象工厂提供一系列创建多个抽象产品的接口,而具体的工厂负责实现具体的产品实例.抽象工…
Java EE设计模式分为三种类型,共23种: 创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式. 结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 行为型模式:模版方法模式.命令模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式.状态模式.策略模式.职责链模式(责任链模式).访问者模式. 下面简单介绍工厂模式,适配器模式和模板方法模式: 一 工厂模式 简单列一下这个模式的家族:1.静态工厂模式  2.简单工厂模式  3.工厂方…
一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同属于同一个产品族的产品可以使用. 产品族:位于不同产品等级结构中,功能相关联的产品组成的家族.下面例子的 汽车和空调就是两个产品树, 奔驰C200+格力某型号空调就是一个产品族, 同理, 奥迪A4+海尔某型号空调也是一个产品族. 二.类图 三.案例 产品类 // 汽车(抽象产品接口) interfa…
[学习难度:★★★★☆,使用频率:★★★★★]  工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销.此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本思想. 1 界面皮肤库的初始设计 Sunny软件公司欲开发一套界面皮肤库,可以对Java桌面软件进行界面美化.为了保护版权,该皮肤库源代码不打…
[学习难度:★★☆☆☆,使用频率:★★★☆☆] 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式.本章将要学习的简单工厂模式是工厂方法模式的"小弟",它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门.此外,工厂方法模式还有一位"大哥"--抽象工厂模式.这三种工厂模式各具特色,难度也逐个加大,在软件开发中它们都得到了广泛的应用,成为面向对象软件中常用的创建对象的工…
定义与类型 定义:由一个工厂对象决定创建出哪一种产品类的实例 类型:创建型,但不属于GOF23种设计模式 适用场景 工厂类负责创建的对象比较少 客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心 优点 只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节 缺点 工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则 Coding 创建一个抽象产品类 public abstract class Video { public abstrac…
一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同属于同一个产品族的产品可以使用. 产品族:位于不同产品等级结构中,功能相关联的产品组成的家族.下面例子的 汽车和空调就是两个产品树, 奔驰C200+格力某型号空调就是一个产品族, 同理, 奥迪A4+海尔某型号空调也是一个产品族. 二.类图 三.抽象工厂模式的组成 抽象工厂(AbstractFacto…
装饰器模式使你可以在运行时使用类似于对象组成的技术来装饰类.这在我们希望实例化具有新职责的对象而无需对基础类进行任何代码更改的情况下尤其有用.本文是在学习完优锐课JAVA架构VIP课程—[框架源码专题]中<学习源码中的优秀设计模式>后写下的学习感悟.探讨了这种模式,并向你展示了如何使用提供的Java代码示例来实现它. 深入探索Java设计模式(一)之单例模式 深入探索Java设计模式(二)之策略模式 总览 装饰器模式是“四人帮”(Erich Gamma,Richard Helm,Ralph J…
一.概念 1.概念 模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式. 它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 2.举例理解 网上举了一个请客吃饭的例子,我觉得解释的挺好的.我们每个人去请客吃饭.一般都含三个步骤:点单.吃东西.买单,而且顺序就是从做左到右的. 在这三个步骤中,点单和买单大同小异,最大的区别在于第二步--吃什么?吃面条和吃满汉全席可大不相同,如图1所示 所以从开发角度来分析,有…