Android中的设计模式之抽象工厂模式
时间: 2018-08-14来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创建型设计模式--抽象工厂模式
意图
协调对象的实例化,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
我觉得就是在工厂方法模式里的工厂类再做一层抽象,从一维抽象升级为二维抽象,在纵向的基础上又加了横向。
别名
Kit
适用场景 一个系统要独立于它的产品创建,组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
结构
AbstracFactory: 抽象工厂,它声明了一组用于创建产品的方法,每一个方法对应一种产品。 ConcreteFactory: 具体工厂,它实现了在抽象工厂中定义的创建产品的方法,生成一组具体产品,这些产品构成了一个产品种类,每一个产品都位于某个产品等级结构中。 AbstractProduct: 抽象产品角色,他为每种产品声明接口 ConcreteProduct: 具体产品角色,他定义了具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法。
例子1 车厂造车
描述
奥迪Q3,Q5,Q7都是一个车系,但是三者之间的零部件差别却是很大,比如Q3的发动机是国产的,Q7是原装进口的,Q3的轮胎是普通轮胎,Q7是越野轮胎。所以工厂造一辆车,要分别造发动机,轮胎,制动系统组成。
结构

代码实现
有类图了,略
应用例子2 Android中的MediaPlayerFactory
优点 分离接口和实现,客户端使用抽象工厂来创建需要的对象,而客户端根本不知道具体的实现是谁,客户端只是面向产品的接口编程而已。
缺点 使类文件爆炸 不太容易扩展新的产品类,每当我们想要增加一个产品类就需要修改抽象工厂,那么所有的具体工厂都要修改。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行