您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

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

目录结构
    • 一、工厂方法的定义与类型
    • 二、工厂方法的适用场景
    • 三、工厂方法的优点
    • 四、工厂方法的缺点
    • 五、工厂方法模式简单示例
    • 六、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)、各类在工厂方法的关系如下图: 在这里插入图片描述 在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0435s