AbstractFactory 抽象工厂模式

AbstractFactory 抽象工厂模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心产出的具体产品类是什么。这样一来,客户就从具体的产品中被解耦。

1.2. 自我理解

通过抽象工厂所提供的接口,可以创建产品的家族,利用这个接口书写代码,我们的代码将从实际工厂解耦,以便在不同上下文中实现各式各样的工厂,制造各样不同的产品。
核心思想是,如果需要一个工厂,这个工厂可以生产出相关联的一批产品,然后不同的工厂实现,会生产出一批不同的产品组合。

1.3. 抽象工厂的组成

AbstractFactory: 抽象工厂角色,它声明了一组用于创建一种产品的方法,每一个方法对应一种产品。
ConcreteFactory: 具体工厂角色,它实现了在抽象工厂中定义的创建产品的方法,生产一组具体产品,这个产品构件成了一个产品种类,每一个产品都位于某个产品等级结构中。
AbstractProduct: 抽象产品角色,为每种产品声明接口。
ConcreteProduct: 具体产品角色,定义了工厂生产的具体产品对象,实现抽象产品接口声明的业务方法。

2. UML

3. Example

3.1. 场景

对于QQ老玩家老说,QQ秀是原来那个年代常用的。QQ秀有不同部位的style可以更换,也有主题可以选择。比如更换发型、上衣、裤子、鞋子、表情、翅膀、背景。等…
现在我们可以用抽象工厂来实现QQ秀主题功能,现在设计出来两款QQ秀主题,非主流、白领系列。两款主题包含了发型、服装。

3.2. AbstractFactory设计模式的代码实现

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/abstract-factory-designpattern-html.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆