工厂方法模式简单介绍(Java语言)
来源:互联网 发布:微信加粉丝软件 编辑:程序博客网 时间:2024/06/10 18:36
工厂方法模式简单介绍(Java语言)
1.工厂方法模式的定义:
工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品。
工厂方法模式在Java编程中使用的频率非常高,查看各种源码均可看见它的身影。
工厂方法模式的具体定义为
**Define an interface for creating an object ,but let subclasses decide which class to instantiate . Factory Method lets a class defer instantiation to subclass.
(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。)**
类图如下:
在该模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类有具体的实现ConcreteCreator完成的。
工厂方法模式的变种较多,下面展示一个比较通用的源码。
抽象产品类
public abstract class Product { /** * 产品类的公共方法 */ public void method1(){ //业务逻辑处理 } //抽象方法 public abstract void method2();}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
具体产品类
public class ConcreteProduct1 extends Product{ /** * 具体产品类 */ @Override public void method2() { // 业务逻辑处理 }}public class ConcreteProduct2 extends Product{ /** * 具体产品类 */ @Override public void method2() { // 业务逻辑处理 }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
抽象工厂类
public abstract class Creator { /** * 创建一个产品对象,其输入参数类型可以自行设置 * 通常为String ,Enum ,Class等,当然也可以为空 */ public abstract <T extends Product> T createProduct(Class<T> c);}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
具体工厂类
public class ConcreteCreator extends Creator{ /** * 具体工厂类 */ @SuppressWarnings("unchecked") @Override public <T extends Product> T createProduct(Class<T> c) { Product product = null; try { product = (Product) Class.forName(c.getName()).newInstance(); } catch (Exception e) { // 异常处理 } return (T)product; }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
场景类
public class Client { /** * 场景类 */ @SuppressWarnings("unused") public static void main(String[] args) { Creator creator = new ConcreteCreator(); Product product = creator.createProduct(ConcreteProduct1.class); /** * 继续业务处理 */ }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2. 工厂方法模式的应用
2.1 工厂方法模式的优点
良好的封装性,代码结构清晰。
工厂方法模式的扩展性非常优秀。
屏蔽产品类。
解耦。
2.2 工厂方法模式的使用场景
首先,工厂方法模式是new一个对象的替代品,所以在所有有需要的生成对象的地方都可以使用,但是需要慎重的考虑是否需要增加一个工厂类进行管理,增加代码的复杂度。
其次,需要灵活的,可扩张的框架时,可以考虑工厂方法模式。
再次,工厂方法模式可以用于异构项目中。
最后,可以使用在测试驱动开发的框架下。
3. 工厂方法模式的扩展
3.1 简单工厂模式
当一个模块仅需要一个工厂类,没有必要把它生产出来的时候,可以使用静态的方法简化工厂方法模式。但是其缺点是扩展困难,不符合开闭原则。
3.2 多个工厂类
为每一个产品定义一个创造者,由调用者自己去选择哪个创造者获取产品类。
缺点是扩展难度增加,每添加一个产品就要添加一个创造者。
3.3 替代单例模式
通过工厂方法模式可以限制实例对象数量。保证内存只存在一定数量的实例化数量。
3.4 延迟初始化
当一个实例化对象被使用完毕之后,并不立即释放,工厂类保持其初始状态,等待再次被使用。
- 工厂方法模式简单介绍(Java语言)
- 工厂方法模式简单介绍(Java语言)
- java va中工厂模式( 静态工厂模式、工厂方法模式、抽象工厂模式)的介绍以及简单例子
- Java工厂模式(简单工厂、工厂方法、抽象工厂)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- 阎宏:Java语言简单工厂创立性模式介绍
- 简单工厂模式(java语言实现)
- java学习之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- java中简单工厂模式(静态工厂方法模式)
- java工厂模式-简单工厂,工厂方法,抽象工厂模式
- JAVA之工厂模式(静态工厂模式(简单工厂模式)、工厂方法模式、抽象工厂模式)
- java中的工厂模式(简单工厂模式+工厂方法模式)
- 工厂模式(简单工厂、工厂方法)
- java设计模式-工厂模式(简单工厂模式和工厂方法模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) (转)
- (转载)JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- 手动HashMap的简单实现
- 8皇后
- 【OpenStack源码分析之六】从虚拟机启动流程看安全认证
- 带进度条上传多视频
- hdu2476-区间DP
- 工厂方法模式简单介绍(Java语言)
- 使用PHP二维码生成类库PHP QR Code生成二维码
- leetcode 26. Remove Duplicates from Sorted Array
- <body>标签常用属性
- Android学习之按键操作
- python书籍推荐
- Spring—Quartz定时调度CronTrigger时间配置格式说明与实例
- Opencv轮廓跟踪算法源码分析(1)——icvFetchContour()
- HDU 2050