简单工厂模式(1)
例子是:計算器,
方法一:是簡單的main實現
第一個類:
/**
?* 計算器,控制臺程序,輸入兩個數,一個運算符,得到結果
?* @author zhangqf
?*
?*/
public class calculate {
?? ?//用傳統的控制臺輸入的方法
?? ?public static void main(String[] args) {
?? ??? ?BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
?? ??? ?try {
?? ??? ??? ?System.out.println("請輸入一個數:");
?? ??? ??? ?String strFirst=strin.readLine();
?? ??? ??? ?double dbfirst=convertTool.StringToDouble(strFirst);
?? ??? ??? ?//System.out.println("第一個:"+dbfirst);
?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ?System.out.println("請輸入第二個數:");
?? ??? ??? ?String strTwo=strin.readLine();
?? ??? ??? ?double dbTwo=convertTool.StringToDouble(strTwo);
?? ??? ??? ?//System.out.println("第二個:"+dbTwo);
?? ??? ??? ?
?? ??? ??? ?System.out.println("請輸入操作符:");
?? ??? ??? ?String strOperate=strin.readLine();
?? ??? ??? ?//System.out.println("操作符:"+strOperate);
?? ??? ??? ?
?? ??? ??? ?double dbResult=calculate.OperateResult(dbfirst, dbTwo, strOperate);
?? ??? ??? ?System.out.println("計算結果:"+dbResult);
?? ??? ??? ?
?? ??? ?} catch (IOException e) {
?? ??? ??? ?System.out.println("您的輸入有錯:"+e.getMessage());
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?
?? ??? ?
?? ?}
?? ?
?? ?
?? ?public static double OperateResult(double dbfirst,double dbTwo,String operate) {
?? ??? ?double result=0.0;
?? ??? ?switch (operate) {
?? ??? ?case "+":
?? ??? ??? ?result=dbfirst+dbTwo;
?? ??? ??? ?break;
?? ??? ?case "-":
?? ??? ??? ?result=dbfirst-dbTwo;
?? ??? ??? ?break;
?? ??? ?case "*":
?? ??? ??? ?result=dbfirst*dbTwo;
?? ??? ??? ?break;
?? ??? ?case "/":
?? ??? ??? ?if (dbTwo==0) {
?? ??? ??? ??? ?System.out.println("除數不能為0;");
?? ??? ??? ?}else{
?? ??? ??? ?result=dbfirst/dbTwo;
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?System.out.println("輸入的符號不符合");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?
?? ??? ?return result;
?? ??? ?
?? ?}
??? }
第二個類:
public class convertTool {
?? ?public static double StringToDouble (String s) {
?? ??? ?if (s==null||s.length()==0)
?? ??? ??? ?return 0d;
?? ??? ?return Double.parseDouble(s);
?? ?}
}
?
第二種方法:簡單工廠模式:我自己理解就是用的:面向對象,繼承,封裝,多態
/**
?*1. 接口類
?* @author zhangqf
?*
?*/
public interface operationRestlt {
?? ?public double dbResule(double _dbFirst,double _dbTwo);
}
/**
?* 2.加號運算
?* @author zhangqf
?*
?*/
public class plusOperate implements operationRestlt{
?? ?@Override
?? ?public double dbResule(double _dbFirst, double _dbTwo) {
?? ??? ?double dbresult=_dbFirst+_dbTwo;
?? ??? ?return dbresult;
?? ?}
}
/**
?*3. 減號運算
?* @author zhangqf
?*/
public class subOperate implements operationRestlt{
?? ?@Override
?? ?public double dbResule(double _dbFirst, double _dbTwo) {
?? ??? ?double dbresult=_dbFirst-_dbTwo;
?? ??? ?return dbresult;
?? ?}
}
?
/**
?* 4.乘號運算
?* @author zhangqf
?*/
public class multipleOperate implements operationRestlt {
?? ?@Override
?? ?public double dbResule(double _dbFirst, double _dbTwo) {
?? ??? ?double dbresule=_dbFirst*_dbTwo;
?? ??? ?return dbresule;
?? ?}
}
/**
?* 5.除號運算
?* @author zhangqf
?*/
public class diviedOperate implements operationRestlt{
?? ?@Override
?? ?public double dbResule(double _dbFirst, double _dbTwo) {
?? ??? ?double dbresult=0d;
?? ??? ?if (_dbTwo==0) {
?? ??? ??? ?System.out.println("被除數不能為0");
?? ??? ?}else{
?? ??? ??? ? dbresult=_dbFirst/_dbTwo;
?? ??? ?}
?? ??? ?return dbresult;
?? ?}
}
//業務類
/**
?*6. 業務類
?* @author zhangqf
?*
?*/
public class operateAction {
?? ?
?? ?public static double operation(double _dbFirst,double _dbTwo,String oper) {
?? ??? ?double dbResult=0d;
?? ??? ?switch (oper) {
?? ??? ?case "+":
?? ??? ??? ?plusOperate plusOperate =new plusOperate();
?? ??? ??? ?dbResult=plusOperate.dbResule(_dbFirst, _dbTwo);
?? ??? ??? ?break;
?? ??? ?case "-":
?? ??? ??? ?subOperate operate=new subOperate();
?? ??? ??? ?dbResult=operate.dbResule(_dbFirst, _dbTwo);
?? ??? ??? ?break;
?? ??? ?case "*":
?? ??? ??? ?multipleOperate multipleOperate=new multipleOperate();
?? ??? ??? ?dbResult=multipleOperate.dbResule(_dbFirst, _dbTwo);
?? ??? ??? ?break;
?? ??? ?case "/":
?? ??? ??? ?diviedOperate diviedOperate=new diviedOperate();
?? ??? ??? ?dbResult=diviedOperate.dbResule(_dbFirst, _dbTwo);
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?System.out.println("輸入的操作符不存在!");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?return dbResult;
?? ??? ?
?? ?}
}
import java.util.Scanner;
/**
?* 7.主程序調用運行
?* @author zhangqf
?*
?*/
public class main {
?? ?public static void main(String[] args) {
?? ??? ?Scanner scanner=new Scanner(System.in);
?? ??? ?System.out.println("請輸入第一個數:");
?? ??? ?double dbfirst=scanner.nextDouble();
?? ??? ?
?? ??? ?System.out.println("請輸入第二個數:");
?? ??? ?double dbtwo=scanner.nextDouble();
?? ??? ?
?? ??? ?System.out.println("請輸入操作符【+,-,*,/】");
?? ??? ?String operate=scanner.next();
?? ?
?? ??? ?double result=operateAction.operation(dbfirst,dbtwo,operate);
?? ??? ?System.out.println(result);
?? ??? ?
?? ?}
}
?
轉載于:https://www.cnblogs.com/zhangqf/p/6086792.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 触发器的简单使用
- 下一篇: Unity3D研究院之Editor下监听