日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单工厂模式(1)

發布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单工厂模式(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位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的简单工厂模式(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。