Java设计模式之——工厂方法模式

一、何为工厂方法模式?

  • 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
  • UML类结构图:

在这里插入图片描述

  • 简单的代码实现:
interface  Product{
    void toProduct();
}

class Cocoa implements Product{

    @Override
    public void toProduct() {
        System.out.println("制作汽水");
        System.out.println("加配方");
        System.out.println("封装成瓶");
    }
}

interface  ProductFactory{
      Product  FactoryMethod();
}

class CocoaFactory implements  ProductFactory{
    @Override
    public Product FactoryMethod() {
        return new Cocoa();
    }
}
public class FactoryMethodQuick {
    public static void main(String[] args) {
        ProductFactory productFactory = new CocoaFactory();     //利用多态
        Product product = productFactory.FactoryMethod();
        System.out.println(product.getClass());
    }
}

在这里插入图片描述

二、简单工厂模式和工厂方法模式的区别以及联系

简单工厂:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

以计算器的例子来画出UML类图:
在这里插入图片描述
上诉代码的实现:

class Operation{
    public double numberA;
    public double numberB;


    public double getResult(){
        return 0;
    }
}

class Add extends Operation{

    @Override
    public double getResult() {
        return numberA + numberB;
    }
}

class Reduction  extends  Operation{
    @Override
    public double getResult() {
        return numberA - numberB;
    }
}

class OperationFactory{
   public static Operation createOperation(String operation){
        Operation resOperation = null;
        switch (operation){
            case "+" :
                resOperation = new Add();
                break;
            case "-" :
                resOperation = new Reduction();
                break;
        }
        return resOperation;
   }
}

public class SimpleFactoryMain {
    public static void main(String[] args) {
        Operation operation = OperationFactory.createOperation("+");
        System.out.println(operation);
        Operation operation1 = OperationFactory.createOperation("-");
        System.out.println(operation1);
    }
}

运行结果:可以看到根据传入的符号,所创建出的对象所属的类:
在这里插入图片描述

工厂方法模式下,计算器的UML类图:
在这里插入图片描述

  1. 区别: 简单工厂模式工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,去除了与具体产品的依赖,但是违背了开闭原则,而工厂方法模式,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来实现。
  2. 联系: 工厂方法模式是简单工厂模式的进一步抽象和推广。

三、总结

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类
实现例子: 计算器实现例子。

下一篇 : Java设计模式之——抽象工厂模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值