设计模式(二):工厂方法模式

2018-07-29  本文已影响0人  Java技术范

01.模式动机

    在简单工厂模式中,如果在原来的实现的基础上,我们再增加一个产品类的实现,那么我们必须在原来的工厂方法里修改工厂类的源代码.那么有没有更好的方法,可以不修改工厂类的源代码而进行动态的可扩展呢?今天我们将要介绍的设计模式之工厂方法模式,就是这样的一个很好的设计思路:将工厂类进行抽象,根据不同的产品创建不同的工厂类,如果动态的增加了一个产品,我们只需要实现这个产品的具体类的工厂类即可。

02.模式定义

    工厂方法模式也称为工厂模式,属于创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

03.模式结构

工厂方法模式包含如下角色:

Product:抽象产品

ConcreteProduct:具体产品

Factory:抽象工厂ConcreteFactory:具体工厂

04.时序图

05.代码示例

    这里我们通过一个具体的实例来进行讲解,在我们编写程序的过程中,我们经常会遇到各种日志,有文件的日志,数据库的日志等。我们这里创建两个抽象的类Log和LogFactory

接下来就是创建Log的实现类:

然后就是生产两种日志的工厂类:

    在实际的应用中,我们根据需求使用不同的工厂生产出不同的对象。这里,如果要有一个WebLog类,我们可以继承Log类,然后创建一个WebLogFactory,只是动态的扩展不需要修改任何的系统代码。

06.工厂方法模式优点

07.工厂方法模式缺点

08.适用场景

在以下情况下可以使用工厂方法模式:

赶快来分享关注吖

上一篇下一篇

猜你喜欢

热点阅读