(四)工厂方法模式

一、概念

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

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

二、优缺点

比较简单工厂模式

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

三、类图

在这里插入图片描述

四、示例代码

(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 中的工厂方法模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值