抽象工厂 当想创建一组密不可分的对象时,工厂方法似乎就不够用了 抽象工厂是应对产品族概念的.应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品.比如,每个汽车公司可能要同时生产轿车.货车.客车,那么每一个工厂都要有创建轿车.货车和客车的方法 优点:向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象 缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性 public interface IRace…
定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象. 产品族 抽象工厂模式中,引入了产品族的概念,什么是产品族呢? 比如轿车和SUV这两种类型的汽车,属于两种不同类型的结构(即产品等级结构),而奔驰和宝马这两个汽车制造品牌,则属于两种不同的品牌,而…
一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟实现类解耦. 简单工厂模式:用来生产同一等级结构中的任意产品(对于增加的新的产品,需要修改已有代码) 工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品) 抽象工厂模式:用来生产不同产品族中的全部产品(对于增加新的产品,无能为力.支持增加新的产品族) [扩展]面向对象设计的基本原则(核…
一.概述 抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象. UML图: 其他的过多概念不再这里赘述,不如通过例子来实际感受与体会 二.实践 关键是搞清等级族的概念,这里以生产手机为例,假设生产小米5和小米6两个型号的手机,两个手机都有内存和处理器,但是内存和处理器的组合不同 :米5采用的是骁龙820+16G内存组合,而米6则是骁龙835+32G组合.生产对应产品的时候就会匹配对应的产品部…
本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品类,能够派生出多个详细产品类. 2. 一个抽象工厂类,能够派生出多个详细工厂类. 3. 每一个详细工厂类仅仅能创建一个详细产品类的实例. 抽象工厂模式特点: 1. 多个抽象产品类,每一个抽象产品类能够派生出多个详细产品类. 2. 一个抽象工厂类.能够派生出多个详细工厂类. 3. 每一个详细工厂类能够…
一.抽象工厂(Abstract Factory)模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态. 为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family).所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族.如图: 图中一共有四个产品族,分布于三个不同的产品等级结构中.只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一的确定这个产品. 引进抽象工厂模式 所谓抽象工厂是指一个工厂等级结构可以创建出分属于不同产品等级结构的一个产…
上一篇的工厂方法模式引入了工厂等级结构,解决了在原来简单工厂模式中工厂类职责太重的原则,但是由于工厂方法模式的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,从而增加系统开销.那么,我们应该怎么来重构?似乎,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是本次将要学习的抽象工厂模式的基本思想. 抽象工厂模式(Abstract Factory) 学习难度:★★★★☆ 使用频率:★★★★★ 一.界面皮肤库的初始设计 M公司IT开发部接到一个开发任务,想要对以前…
一. 工厂方法(Factory Method)模式 工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中. 工厂方法模式是简单工厂模式的进一步抽象和推广.由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点. 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做.这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节.这使得工厂方法模式可以允许…
上一篇的工厂方法模式引入了工厂等级结构,解决了在原来简单工厂模式中工厂类职责太重的原则,但是由于工厂方法模式的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,从而增加系统开销.那么,我们应该怎么来重构?似乎,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是本次将要学习的抽象工厂模式的基本思想. 抽象工厂模式(Abstract Factory) 学习难度:★★★★☆ 使用频率:★★★★★ 一.界面皮肤库的初始设计 M公司IT开发部接到一个开发任务,想要对以前…
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需要new一行代码就成了,可能需要一些列的初始化设置,或先创建一些辅助对象来创建这个对象. 在这种场景中,如果需要多次创建这种对象,那每次都要写很多代码.工厂模式的产生就是为了解决这种问题. 工厂模式厉害之处就在于:你不需要知道创建对象的细节就可以轻松的创建你想要的对象,并且产品和工厂是解耦的. 3种…