Java设计模式实践:简单工厂模式实现计算器

需积分: 10 0 下载量 76 浏览量 更新于2024-08-26 收藏 416KB PPT 举报
"本文主要介绍了如何在Java中实现简单工厂设计模式,以及设计模式的核心价值——解决代码复用,避免程序频繁修改。通过一个简单的计算器案例,展示了简单工厂模式的具体应用,包括接口定义、具体实现类、算法工厂的创建以及测试代码的编写。" 在软件工程中,设计模式是经过时间验证的、通用的解决方案,用于解决常见的编程问题。其中,工厂模式是一种创建型设计模式,其核心思想是将对象的创建过程封装起来,使得客户端无需关注具体的创建细节,只需要知道如何请求即可。这样可以提高代码的灵活性和可扩展性,同时减少对原有代码的改动。 简单工厂模式是工厂模式的一种,它提供了一个静态方法来创建对象,根据传入的参数决定创建哪种类型的对象。在本例中,我们构建了一个简单的计算器应用,实现了加法和减法操作。 1. 共有的接口:`Oper` 是所有运算操作的公共接口,定义了基本的运算行为,例如 `getResult()` 方法,这样不管具体是加法还是减法,都可以通过这个接口进行操作。 ```java public class Oper { public double getResult(); } ``` 2. 各个具体实现类:`add` 和 `dis` 分别代表加法和减法操作,它们都继承自 `Oper` 接口,并实现其方法。 ```java class Add extends Oper { private double numA; private double numB; // 构造器,设置操作数 public Add(double numA, double numB) { this.numA = numA; this.numB = numB; } @Override public double getResult() { return numA + numB; } } class Dis extends Oper { // 类似的实现,省略... } ``` 3. 算法工厂:`OperationFactory` 是简单工厂类,根据用户输入的运算符(如 "+" 或 "-")返回对应的运算对象。 ```java public class OperationFactory { public static Oper createOperation(String operate) { Oper op = null; if (operate == null) throw new Exception("运算符不能为空!"); else if (operate.equals("+")) op = new AddOperation(); else if (operate.equals("-")) op = new SubOperation(); else throw new Exception("运算符错误!"); return op; } } ``` 4. 测试代码:`OperationTest` 类用于模拟用户输入,调用工厂类创建运算对象,然后执行计算。 ```java public class OperationTest { public static void main(String[] args) { // 输入处理、运算符判断等,省略... Operation op = OperationFactory.createOperation(operate); op.setNumA(numA); op.setNumB(numB); double result = op.getResult(); System.out.println("运算结果为:" + result); } } ``` 简单工厂模式的主要优点在于降低了客户端与产品之间的耦合度,使得客户端可以更容易地扩展或更改产品类型,而无需修改代码。然而,它的缺点是如果需要添加新的产品类型,可能需要修改工厂类,这违背了开闭原则(即对扩展开放,对修改关闭)。 在实际应用中,如果产品类型很多,或者需要支持更复杂的条件判断,可能会考虑使用工厂方法模式或抽象工厂模式。这些模式提供了更灵活的结构,以适应更多的场景和变化。