您当前的位置: 首页 >  小志的博客 Java

java设计模式——工厂方法模式

小志的博客 发布时间:2020-05-07 22:52:04 ,浏览量:3

目录结构

    • 一、工厂方法的定义与类型
    • 二、工厂方法的适用场景
    • 三、工厂方法的优点
    • 四、工厂方法的缺点
    • 五、工厂方法模式简单示例
    • 六、jdk源码中使用工厂方法模式的示例

一、工厂方法的定义与类型

1、定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。
2、类型:创建型

二、工厂方法的适用场景

1、创建对象需要大量重复的代码。
2、客户端(应用层)不依赖于产品类实例如何被创建、实现等细节。
3、一个类通过其子类来指定创建哪个对象。

三、工厂方法的优点

1、用户只需要关心所需产品对应的工厂,无须关心创建细节。
2、加入新产品符合开闭原则,提高可扩展性。

四、工厂方法的缺点

1、类的个数容易过多,增加复杂度
2、增加了系统的抽象性和理解难度

五、工厂方法模式简单示例

1、定义一个视频类和录制java、python、vue视频的子类

(1)、定义一个视频类

(2)、定义一个录制java视频的类

(3)、定义一个录制python视频的类

(4)、定义一个录制Vue的视频类

2、定义一个获取录制视频工厂类和获取录制java、python、vue视频工厂的子类

(1)、定义一个获取录制视频工厂类

(2)、定义一个获取录制java视频工厂类

(3)、定义一个获取录制python视频工厂类

(4)、定义一个获取录制vue视频的工厂类

3、定义一个测试类,并获取输出结果

(1)、定义一个测试类

(2)、输出结果如下:

4、类图如下:

六、jdk源码中使用工厂方法模式的示例

1、Collection类中使用到了简单工厂
(1)、按【Ctrl+Shift+N】,输入Collection,找到Collection.java文件并打开。如下图:
(2)、按【Alt+7】,弹出的Structure窗口中,点击iterator方法。如下图:

(3)、按【Ctrl+Alt】,鼠标左键点击iterator方法,找到该方法的具体实现类ArrayList。如下图:
(4)、按【Ctrl】,鼠标左键点击Itr实现的接口Iterator。如下图:
(5)、进入Iterator接口内部。如下图:
(6)、具体的工厂方法部分如下所示:
2、URLStreamHandlerFactory类中使用到了简单工厂
(1)、按【Ctrl+Shift+N】,输入URLStreamHandlerFactory,找到URLStreamHandlerFactory.java文件并打开。如下图:
(2)、按【Ctrl+Alt】,鼠标左键点击URLStreamHandlerFactory,找到该方法的具体实现类Factory。该Factory为内部类。如下图:
(3)、按【Ctrl】,鼠标左键点击URLStreamHandler类,进入该类。URLStreamHandler类为抽象类。如下图:

(4)、按【Ctrl+Alt】,鼠标左键点击URLStreamHandler,弹出的窗口中展示URLStreamHandler抽象类的所有的具体实现类。如下图:

(5)、以https包中的URLStreamHandler类的具体实现类Handler为例。如下图:
(6)、通过间接继承后,发现Handler继承了URLStreamHandler抽象类

(7)、各类在工厂方法的关系如下图:

关注
打赏
查看更多评论

小志的博客

暂无认证

  • 3浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录