网站首页 > java教程 正文
内容导读
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。2.代码实现 场景:工厂在制造模具时,会使用统一的工具,当你输入你需要的形状时,就会制造出对应的形状。2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。缺点: 每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。使用场景: 1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。3、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。
1.工厂模式(Factory Pattern)
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
2.代码实现
场景:工厂在制造模具时,会使用统一的工具,当你输入你需要的形状时,就会制造出对应的形状。
形状接口:
public interface Shape { /** * 制造各种形状模型 */ void Manufacture(); }
圆形模型
public class Circular implements Shape{ @Override public void Manufacture() { System.out.println("我是制造的圆形模具!"); } }
矩形模型
public class Rectangle implements Shape { @Override public void Manufacture() { System.out.println("我是制造的矩形模具"); } }
制造工具
/** * Created by 马欢欢 on 2018/3/15. */ public class Factory { public static <T> T getClass(Class<? extends T> clazz){ T obj = null; try { obj = (T) Class.forName(clazz.getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return obj; } }
工厂
public class FactoryPattern { public static void main(String[] args) { Shape circular = Factory.getClass(Circular.class); circular.Manufacture(); Shape rectangle = Factory.getClass(Rectangle.class); rectangle.Manufacture(); } }
运行结果:
优点:
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。使用场景:
1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。
3、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。
(总结参考:菜鸟教程)
当前文集 :Java设计模式
代码:GitHub
猜你喜欢
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)