ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> 移动开发 >> Java设计模式篇(五)--工厂方法模式详解

Java设计模式篇(五)--工厂方法模式详解(1/3)

来源:网络整理     时间:2018-10-31     关键词:

本篇文章主要介绍了" Java设计模式篇(五)--工厂方法模式详解",主要涉及到方面的内容,对于移动开发感兴趣的同学可以参考一下: 一、工厂方法模式概述工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是...

一、工厂方法模式概述

工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式是简单工厂模式的进一步抽象和推广。

二、简单工厂模式 VS 工厂方法模式

在篇三中,我们说过简单工厂模式。

简单工厂模式:将对象的创建放在了一个工厂类中,当需要新增一个分支时,就需要修改工厂类。根据开闭原则,简单工厂模式违反了此原则。

工厂方法模式:在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给工厂子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。

按照对象不同,分为不同的工厂,每一类对象都有一个自己对应的工厂产生,这些工厂之间使用同一接口方法关联,所以叫工厂方法模式。工厂方法模式将对象的创建过程放在工厂方法模式保持了简单工厂模式的优点,也克服了它的缺点。

但是,工厂方法模式也有缺点,那就是每新增一类对象,就需要增加一个生产对应对象的工厂类,增加了额外的工作量。当然,这个缺点可以克服,那就是使用反射,我们等下一次重构再说。

工厂方法模式的结构图如下:


三、工厂方法模式举例

我们还使用简单工厂模式中使用的内容,我们通过重构,看下他们的变化在哪。

我们先看下类图:

抽象工厂接口:

package com.zhaodf.pattern.factoryMethodPattern;

public interface OperationFactory{
    Operation createOperation(double numberA, double numberB);
}

加法工厂实现类:

package com.zhaodf.pattern.factoryMethodPattern;

public class AddFactory implements OperationFactory{
    public Operation createOperation(double numberA, double numberB) {
        return new AddOperation(numberA,numberB);
    }
}

减法工厂实现类:

package com.zhaodf.pattern.factoryMethodPattern;

public class SubFactory implements OperationFactory{
    public Operation createOperation(double numberA, double numberB) {
        return new SubOperation(numberA,numberB);
    }
}

 操作类统一抽象接口:

package com.zhaodf.pattern.factoryMethodPattern;

public interface Operation {

    double getResult();
}

 加法操作类实现:

相关图片

相关文章