XML第十二讲:设计模式:简单工厂模式
来源:互联网 发布:网络任务发布平台 编辑:程序博客网 时间:2024/04/28 10:29
在讲XML解析的前面,我们来先学习一下简单工厂模式,因为这个模式对后面我们学习的XML解析是有关系的。
1. 回顾一下我们之前学过的设计模式:
单例设计模式
策略模式
动态代理模式
适配器模式 -- Adapter和Listener
观察者模式 [重要]
装饰者模式 [重要]
2. 简单工厂模式
1) 意图
简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。通常它根据自变量的不同返回不同的类的实例。
[举个例子:比如说有个代工厂,它的业务是代工笔记本电脑,如thinkpad,Dell,Apple等,只要客户需要thinkpad,则这个工厂就提供相应的产品(thinkpad)给他,这个客户自然也不用知道thinkpad是如何制作出来的,只要出来的产品是符合客户需要的就可以了,具体产品是如何创建的是由代工厂来决定的。这就是类似简单工厂模式]
2)适用性
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例。
3) 简单工厂模式的构成:
• 工厂类(Creator)角色: 担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现。[好比代工厂,是核心]
• 抽象产品(Product)角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。[好比代工的产品,比如笔记本产品,是抽象的]
• 具体产品(Concrete Product)角色:简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。[好比具体的笔记本产品,比如thinkpad,或者Dell等]
4) 实现自己的简单工厂模式
(1) 创建抽象产品角色:
package com.ahuier.simplefactory;/* * 抽象产品角色 * 好比如笔记本 */public abstract class Product {}
(2)创建两个具体产品角色
package com.ahuier.simplefactory;/* * 具体产品角色(可能有多个) * 好比如 thinkpad笔记本 */public class ConcreteProductA extends Product {}package com.ahuier.simplefactory;/* * 具体产品角色(可能有多个) * 好比如 Dell笔记本 */public class ConcreteProductB extends Product {}(3) 创建工厂类角色
package com.ahuier.simplefactory;/* * 工厂类角色 * 通常工厂类里面的方法是定义成一个静态的方法 */public class Creator { //根据外部传入的参数返回对应的实例,类似根据传入客户的需求(thinkpad 或者 Dell)返回对应的产品。 public static Product createProduct(String str){ //常量"A"最好写在比较表达式的前面 if("A".equals(str)){ return new ConcreteProductA(); //其实在这里需要完成的是一个复杂的逻辑 } if("B".equals(str)){ return new ConcreteProductB(); } return null; }}(4)创建一个客户端
[编译执行结果]:com.ahuier.simplefactory.ConcreteProductApackage com.ahuier.simplefactory;/* * 客户端 * 好比如客户 */public class Client { public static void main(String[] args) { /* * 这边作为客户端,创建类的实例是由工厂帮我们创建的。以前是用new的形式。 * 也就是把创建实例的责任推给了工厂,我们只是传给它参数它就返回对应的实例。 */ Product productA = Creator.createProduct("A"); System.out.println(productA.getClass().getName()); Product productB = Creator.createProduct("B"); System.out.println(productB.getClass().getName()); } }
com.ahuier.simplefactory.ConcreteProductB
下一讲我们就来讲解如何使用好简单工厂模式,也就是利用这种模式来进行XML解析。
- XML第十二讲:设计模式:简单工厂模式
- 大话设计模式第一讲(简单工厂模式)
- (四)XML设计模式——简单工厂模式
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- Linux常用命令大全
- C陷阱与缺陷(六)预处理器
- 状态模式
- 正整数类
- windows eclipe C++开发环境配置
- XML第十二讲:设计模式:简单工厂模式
- 2013年腾讯编程马拉松初赛第2场(3月22日)解题参考
- 独立磁盘冗余阵列(RAID)
- 2013.3.23-1
- 如何将真彩色图转换为各种灰度图
- 序列最大和分割、最大距离、滑动窗口最大值问题
- SQLPLUS相关指令
- 张乐奕:如何成为oracle ACE及数据库故障处理感受
- 常用SQL语句总结