JAVA 工厂模式计算器
有一個(gè)計(jì)算接口(ICalculation),該接口定義兩個(gè)方法,calculation實(shí)現(xiàn)計(jì)算功能、display顯示計(jì)算結(jié)果。有四個(gè)類Add(加)、Sub(減)、Mul(乘)、Div(除)四個(gè)類。這四個(gè)類都有私有屬性a、b,四個(gè)類實(shí)現(xiàn)接口的方法,完成屬性的加(a+b)、減(a-b)、乘(a*b)、除(a/b)的計(jì)算,并能通過(guò)display方法顯示計(jì)算結(jié)果。
有一個(gè)計(jì)算工廠類CalculationFactory,該類只有一個(gè)公有方法,返回值類型為ICalculation,方法的形式參數(shù)為String s,double a,double b。方法功能為:若s是”Add”實(shí)例化Add類的對(duì)象,返回該對(duì)象;若s是”Sub”實(shí)例化Sub對(duì)象,返回該對(duì)象;若s是”Mul”實(shí)例化Mul類的對(duì)象,返回該對(duì)象;若s是”Div”實(shí)例化Div對(duì)象,返回該對(duì)象,a、b是調(diào)用構(gòu)造方法傳進(jìn)的參數(shù)。
有一個(gè)測(cè)試類:從鍵盤接受一個(gè)字符串,字符串的形式為a+b、a-b、a*b、a/b中的一種,然后實(shí)例化CalculationFactory,通過(guò)CalculationFactory實(shí)例化對(duì)象調(diào)用其getCalculation方法獲得一個(gè)計(jì)算類的對(duì)象賦值給ICalculation的變量,通過(guò)其調(diào)用計(jì)算和顯示方法,顯示計(jì)算結(jié)果。
例如:用戶輸入”3+4”將該字符串轉(zhuǎn)化成double類型的double a=3;double b=4;String s=”Add”;,先將CalculationFactory實(shí)例化對(duì)象調(diào)用其ICalculation ic=getCalculation(s,a,b);方法得到Add類的實(shí)例化對(duì)象賦值給ICalculation的 ic,通過(guò)ic.display()顯示結(jié)果為7。該設(shè)計(jì)模式是典型的工廠模式,類圖如下所示。
package final_assignment3_Computing_factory; //計(jì)算接口(ICalculation) interface ICalculation {double calculation(); //實(shí)現(xiàn)計(jì)算功能void display();//顯示計(jì)算結(jié)果 } package final_assignment3_Computing_factory; //加法類 public class Add implements ICalculation {// 定義私有變量a、bprivate double a;private double b;// 構(gòu)造方法以初始化Add(double a, double b) {this.a = a;this.b = b;}//重寫方法@Overridepublic double calculation() {return a + b;}@Overridepublic void display() {System.out.println(a + b);} } package final_assignment3_Computing_factory; //減法類 public class Sub implements ICalculation {// 定義私有變量a、bprivate double a;private double b;// 構(gòu)造方法以初始化Sub(double a, double b) {this.a = a;this.b = b;}//重寫方法@Overridepublic double calculation() {return a - b;}@Overridepublic void display() {System.out.println(a - b);} } package final_assignment3_Computing_factory; //乘法類 public class Mul implements ICalculation {// 定義私有變量a、bprivate double a;private double b;// 構(gòu)造方法以初始化Mul(double a, double b) {this.a = a;this.b = b;}//重寫方法@Overridepublic double calculation() {return a * b;}@Overridepublic void display() {System.out.println(a * b);} } package final_assignment3_Computing_factory; //除法類 public class Div implements ICalculation {// 定義私有變量a、bprivate double a;private double b;// 構(gòu)造方法以初始化Div(double a, double b) {this.a = a;this.b = b;}//重寫方法@Overridepublic double calculation() {return a / b;}@Overridepublic void display() {System.out.println(a / b);} } package final_assignment3_Computing_factory; //除法類 public class Div implements ICalculation {// 定義私有變量a、bprivate double a;private double b;// 構(gòu)造方法以初始化Div(double a, double b) {this.a = a;this.b = b;}//重寫方法@Overridepublic double calculation() {return a / b;}@Overridepublic void display() {System.out.println(a / b);} } package final_assignment3_Computing_factory; import java.util.Scanner; //測(cè)試類 public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in); System.out.print("請(qǐng)輸入一個(gè)完整的算式(eg:a+b):");String input = sc.nextLine();int temp = 0;for (int i = 0; i < input.length(); i++) {char symbol = input.charAt(i);//判斷符號(hào)if (symbol == '+' || symbol == '-' || symbol == '*' || symbol == '/') {temp = i;break;}}//Double.parseDouble將字符串轉(zhuǎn)化為double類型double a = Double.parseDouble(input.substring(0, temp));double b = Double.parseDouble(input.substring(temp + 1, input.length()));String s = "";char symbol = input.charAt(temp);switch (symbol) {case '+':s = "Add";break;case '-':s = "Sub";break;case '*':s = "Mul";break;case '/':s = "Div";break;}//實(shí)例化 用于得到+-*/類的實(shí)例化對(duì)象賦值給ICalculation的 icICalculation ic = new CalculationFactory().getCalculation(s, a, b);ic.display();} }總結(jié)
以上是生活随笔為你收集整理的JAVA 工厂模式计算器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows桌面怎么添加计算机,Win
- 下一篇: 爬虫实习小结