浅谈Java设计模式——工厂方法模式(FactoryMethod)

本文深入讲解了工厂方法设计模式的概念,探讨了其在类实例化过程中的应用,特别是在类不确定所需创建对象的具体类时的解决方案。通过具体示例,如加法和减法运算操作的创建,展示了如何通过子类来指定实例化对象,实现了代码的灵活性和扩展性。

一、概述

        定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

二、使用场景

1.当一个类不知道它所必须创建的对象的类的时候。 
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

三、类图

四、实现代码

Operation抽象类:

/**
 * 运算超类
 */
public abstract class Operation {
    public abstract double getResult(double t1, double t2);
}

OperationAdd类:

/**
 * 加法操作
 */
public class OperationAdd extends Operation {
    @Override
    public double getResult(double t1, double t2) {
        return t1 + t2;
    }
}

OperationSubtraction类:

/**
 * 减法操作
 */
public class OperationSubtraction extends Operation {
    @Override
    public double getResult(double t1, double t2) {
        return t1 - t2;
    }
}


Factory接口:

/**
 * 工厂接口
 */
public interface Factory {
    public Operation createOperation();
}

AddFactory类:

public class AddFactory implements Factory {
    @Override
    public Operation createOperation() {
        return new OperationAdd();
    }
}

SubtractionFactory类:

public class SubtractionFactory implements Factory {
    @Override
    public Operation createOperation() {
        return new OperationSubtraction();
    }
}


客户端代码:

public class Client {
    public static void main(String[] args) {
        Factory factory = new AddFactory();
        Operation operation = factory.createOperation();
        double result = operation.getResult(2, 2);
        System.out.println("add operation result: " + result);

        Factory factory1 = new SubtractionFactory();
        Operation operation1 = factory1.createOperation();
        double result1 = operation1.getResult(9, 3);
        System.out.println("substractionFactory operation result: " + result1);
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值