(四)工厂方法模式

一、概念

工厂方法模式是对简单工厂模式进一步的解耦。在工厂方法模式中是一个子类对应一个工厂类,而这些工厂类都实现于一个抽象接口

使用继承,把对象的创建委托给子类,子类实现工厂方法来创建对象

二、优缺点

比较简单工厂模式

  • 工厂模式中,要增加产品类时也要相应地增加工厂类,客户端的代码也增加了不少。工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行
  • 工厂方法模式克服了简单工厂会违背开-闭原则的缺点,又保持了封装对象创建过程的优点
  • 缺点:每增加一个产品类,就需要增加一个对应的工厂类,增加了额外的开发量

三、类图

在这里插入图片描述

四、示例代码

(1)定义操作接口

public interface Operation {

    double getResult(int num1,int num2);

}

(2)定义操作实现类

// 加法类
public class Add implements Operation {
    public double getResult(int num1, int num2) {
        return num1 + num2;
    }
}

// 减法类
public class Sub implements Operation {
    public double getResult(int num1, int num2) {
        return num1 - num2;
    }
}

(3)定义工厂接口

public interface Factory {

    Operation createOperate();
}

(4)定义工厂实现类

// 加法工厂
public class AddFactory implements Factory {
    @Override
    public Operation createOperate() {
        return new Add();
    }
}
//减法工厂
public class SubFactory implements Factory {
    @Override
    public Operation createOperate() {
        return new Sub();
    }
}

(5)测试调用

public static void main(String[] args) {
    Factory addFactory = new AddFactory();
    Factory subFactory = new SubFactory();
    Operation add = addFactory.createOperate();
    Operation sub = subFactory.createOperate();
    System.out.println(add.getResult(1,2));
    System.out.println(sub.getResult(1,2));
}

//=========结果=========
3.0
-1.0

五、使用场景

  • Collection中的iterator方法
    在这里插入图片描述

  • java.net 网络包中的工厂方法模式

  • Logback 中的工厂方法模式

发布了18 篇原创文章 · 获赞 0 · 访问量 282
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览