美文网首页
工厂方法模式

工厂方法模式

作者: 南小夕 | 来源:发表于2019-04-24 17:22 被阅读0次

一、前言

工厂方法模式是创建型设计模式之一。工厂方法模式是一种很好的模式,在我们平时开发中应用很广泛。(Ps:如果对工厂方法模式不是很了解,可以先看上一篇简单工厂 https://www.jianshu.com/p/4490d9ad0d1a,再看这一篇)

二、定义

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

三、适用场景

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

四、代码实战

还是用上一篇简单工厂的例子,我们把它改造成工厂模式。

首先还是创建录制Java视频的video和python的video, 屏幕快照 2019-04-23 下午4.12.51.png 屏幕快照 2019-04-23 下午4.12.17.png 屏幕快照 2019-04-23 下午4.12.29.png 然后创建工厂,但是VideoFactory中只定义契约、规范,不定义具体产生的产品,具体产生什么都交给子类去做, 屏幕快照 2019-04-23 下午4.14.24.png 然后创建子类工厂, 屏幕快照 2019-04-23 下午4.15.09.png 屏幕快照 2019-04-23 下午4.15.17.png 测试, 屏幕快照 2019-04-23 下午4.15.40.png
主要分为四大模块,一是抽象工厂VideoFactory类,其为工厂方法模式的核心;二是具体工厂JavaVideoFactory和PythonVideoFactory类,其实现了具体的业务逻辑;三是抽象产品Video类,是工厂方法模式所创建的产品的父类;四是具体产品JavaVideo和Python类,为实现抽象产品的某个具体产品的对象。

上述的代码中我们在MainActivity中构造了一个工厂对象,并通过其生产了一个产品对象,这里我们得到的产品对象是JavaVideo的实例。
到这里可以发现,工厂方法模式是完全符合设计原则的,其降低了对象之间的耦合度,而且,工厂方法模式依赖于抽象的架构,其将实例化的任务交由子类去完成,有非常好的扩展性。

五、总结

1、优点

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

2、缺点

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

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • 五分钟精通设计模式(三)之工厂方法模式

    工厂方法模式分为三种: 普通工厂方法模式、多个工厂方法模式、静态工厂方法模式 废话不多说,下面直奔主题,实现步骤:...

网友评论

      本文标题:工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/lqyggqtx.html