设计模式(1)——SimpleFactory简单的工厂设计模式

本文介绍了一种简单工厂设计模式的应用案例——计算器程序。通过该模式,文章展示了如何利用工厂类创建不同的操作对象(如加减乘除),并实现了灵活高效的操作选择。此模式有助于提高代码复用性和整洁度。

简单的工厂设计模式,下面用一计算器的例子来实现这个简单的工厂设计模式。

工厂设计模式的关键是一个工厂类,工厂类为操作提供每个操作的方法,每个操作都只是要调用工厂类的方法就可以对每个操作进行操作。这样就节约了开销和节约了代码,提高了代码的可重用度和代码的工整性。

下面实现的是一个计算器的工厂模式。

首先是一个计算器工厂,这个在设计的时候使用了单进单出的单态原则

public class opreationFactory { public opreation creatOpreation( char opreation){ opreation op = null; switch( opreation ){ case '+': op = new opreationAdd(); break; case '-': op =new opreationSub(); break; case '*': op = new opreationMul(); break; case '/': op = new opreationDiv(); break; default : break; } return op; } }

下面是一个操作的对象实体类:

/** * * @author Knowbody * */ public abstract class opreation { private double number1 = 0; private double number2 = 0; public double getNumber1() { return number1; } public void setNumber1(double number1) { this.number1 = number1; } public double getNumber2() { return number2; } public void setNumber2(double number2) { this.number2 = number2; } public abstract double getResult(); }

下面是工厂里面每个具体操作类的实现:

opreationAdd.java
/** * @author Knowbody * */ public class opreationAdd extends opreation{ @Override public double getResult() { double result = 0; result = this.getNumber1() + this.getNumber2(); return result; } }

opreationDiv.java

/** * * @author Knowbody * */ public class opreationDiv extends opreation { @Override public double getResult() { double result = 0; try { if(getNumber2() != 0){ result = getNumber1()/getNumber2(); } } catch (Exception e) { System.err.println("第二个数不能为0"); } return result; } }

opreationSub.java

/** * @author Knowbody * */ public class opreationSub extends opreation{ @Override public double getResult() { double result = 0; result = this.getNumber1() - this.getNumber2(); return result; } }

opreationMul.java

/** * @author Knowbody * */ public class opreationMul extends opreation{ @Override public double getResult() { double result = 0; result = this.getNumber1() * this.getNumber2(); return result; } }

下面是一个主函数进行调用:

import java.util.Scanner; public class opreationMain { public static void main( String[] args){ opreationFactory opf = new opreationFactory(); opreation op = null; Scanner sc = new Scanner(System.in); System.out.print("请输入操作方式:"); char c = sc.next().charAt(0); op = opf.creatOpreation(c); while (op == null){ System.out.println("输入有误,请从新输入"); System.out.print("请输入操作方式:"); c = sc.next().charAt(0); op = opf.creatOpreation(c); } System.out.print("请输入第一个数字:"); op.setNumber1(sc.nextDouble()); System.out.print("请输入第二个数字:"); op.setNumber2(sc.nextDouble()); double result = op.getResult(); System.out.println("结果是:"+result); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值