网站首页 > java教程 正文
工厂模式简介
工厂模式的作用是屏蔽创建对象过程中的具体过程,以便提高创建对象过程的灵活性,使使用者不必关心构造对象的细节和复杂的过程。
工厂模式一般情况下分为三类:
1.简单工厂模式(Simple Factory)
2.工厂方法模式(Factory Method)
3.抽象工厂模式(Abstract Factory)
在工厂模式中一般存在以下三个类型的角色,分别是产品类,工厂类和客户类。产品类就是最终产出的产品;工厂类就是生产产品的工厂;客户类就是最终产品的需求者。
一、简单工厂模式(Simple Factory)
简单工厂模式对上面提到的工厂模式中三个类型角色中的产品类进行了修改,把产品类进行了抽象,分成了抽象产品角色和具体产品角色,其他角色类不变。抽象产品角色一般是具体产品类需要继承的父类或者需要实现的接口,而具体产品角色就是工厂类中需要创建的产品实例。
代码实例:
1.产品类
简单工厂模式中的产品类
2.工厂类
简单工厂模式中的工厂类
3.客户类
简单工厂模式中的客户类
二、工厂方法模式(Factory Method)
工厂方法模式对上面提到的简单工厂模式又进行了一部分修改,在简单工厂模式的基础上把工厂类进行了抽象,分成了抽象工厂角色和具体工厂角色。抽象工厂角色是工厂方法模式中的核心部分,是必须由具体工厂角色进行继承或者实现的父类或者接口。具体工厂角色在继承或者实现抽象工厂角色后在自己的内部做具体的业务逻辑。
代码实例:
1.产品类
工厂方法模式中的抽象产品角色和具体产品角色
2.工厂类
工厂方法模式中的抽象工厂角色和具体工厂角色
3.客户类
工厂方法模式中的客户类
三、抽象工厂模式(Abstract Factory)
抽象工厂模式由于本人用的比较少,所以不做过多的解读,大家有什么自己的看法或者见解请在留言板或者私信中告诉我,废话少说直接上代码实例。(PS:以下代码实例是从网上找的,如果作者看到可以私信我,我会进行删除)
代码实例:
1.抽象工厂模式等级结构
抽象工厂模式中的等级结构
2.产品类
抽象工厂模式中的产品类
3.工厂类
抽象工厂模式中的工厂类
4.客户类
抽象工厂模式中的客户类
结语
其实不管是简单工厂模式、工厂方法模式还是抽象工厂模式都需要根据自己的业务需求去做更改。我看到网上对工厂模式根据不同的实现还有很多解读。例如:多个工厂方法模式、静态工厂方法模式等。其实大的框架都大同小异,只是在实现部分做了一些修改。 比如多个工厂方法模式就是在工厂角色类中直接根据不同的产品生成去创建不同的多个方法去实现而不做逻辑判断。而静态工厂方法模式也是在工厂角色类中进行了修改,就是把多个工厂方法模式中的多个实现方法进行静态化。大家还有什么自己的具体实现可以在留言板或者私信告诉我,我会及时与大家进行互动。
欢迎对设计模式或者Java开发有兴趣的朋友关注本人头条号,以便大家持续阅读。如果大家有什么想看或者想了解的技术也可以留言板或者私信告诉我,我专门写文章出来与大家分享。
猜你喜欢
- 2024-10-23 Java的简单工厂模式(java简单工厂模式实验总结)
- 2024-10-23 Java开发篇——设计模式(3)面试被问工厂模式?不要怕看这里
- 2024-10-23 架构师成长之路:Java设计模式之工厂模式
- 2024-10-23 Java的设计模式(十一):三种工厂模式区别,SpringBoot中的运用
- 2024-10-23 Java——工厂方法模式(java的工厂模式是什么意思啊)
- 2024-10-23 Java编程细节——设计模式之工厂模式
- 2024-10-23 Java之工厂方法(Factory Method)(java工厂模式的应用场景)
- 2024-10-23 Java工厂设计模式学习笔记(详细总结)
- 2024-10-23 教你轻松学Java开发23种设计模式 --工厂设计模式
- 2024-10-23 java设计模式-创建者模式-工厂模式
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)