创建型模式-工厂方法模式理解

目录

1.前言:

2.工厂方法demo优化

3.优缺点


1.前言:

上一篇文章写道创建型模式-简单工厂模式demo理解

简单工厂模式有一个缺点就是,创建对象的if、else if代码片段带到了工厂类里面去了,后面要是新增一个指标进行分析的话,还要在工厂类里面,重写新增一个 else if 代码片段,违背了开闭原则。

怎么样对这个缺点进行优化呢,就可以使用工厂方法模式进行优化,简单点就是,工厂类下面进行新增子类,不同指标类实现不同的创建对象和实现计算的api.

2.工厂方法demo优化

主要是工厂类接口层进行优化,

//抽象接口:情景分析接口层
interface Analysis {
    public void calculate();
}

//实现层:指标a分析
class AnalysisIndexA implements Analysis {
    public AnalysisIndexA() {
        System.out.println("指标a分析!");
    }

    public void calculate() {
        System.out.println("指标a计算完成!");
    }
}

//实现层:指标b分析
class AnalysisIndexB implements Analysis {
    public AnalysisIndexB() {
        System.out.println("指标b分析!");
    }

    public void calculate() {
        System.out.println("指标b计算完成!");
    }
}

//工厂类
interface analysisFactory {
    //工厂类只负责抽象一个接口
    public Analysis factoryMethod();

}
//指标a工厂类
class AnalysisIndexAFactory implements analysisFactory {
    public Analysis factoryMethod() {
        return new AnalysisIndexA();
    }
}

//指标a工厂类
class AnalysisIndexBFactory implements analysisFactory {
    public Analysis factoryMethod() {
        return new AnalysisIndexB();
    }
}


class Client {
    public static void main(String args[]) {
        //
        analysisFactory factory;
        factory = new AnalysisIndexAFactory();
        Analysis analysis;
        //通过静态工厂方法引用不同指标对象
        analysis = factory.factoryMethod();
        //开始进行指标计算
        analysis.calculate();
    }
}

3.优缺点

1. 主要优点

       工厂方法模式的主要优点如下:

       (1) 向调用方隐藏创建细节

       (2) 加入新指标计算时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体指标工厂和具体指标类就可以了,这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

  2. 主要缺点

     工厂方法模式的主要缺点如下:

      (1) 新增指标数量增加,类的个数也随之增加,增加资源开销


 

猜你喜欢

转载自blog.csdn.net/qq_44691484/article/details/130527670