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