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

    技术2025-05-05  18

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

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

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

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

    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); } }   

     

    最新回复(0)