麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

簡(jiǎn)單工廠模式

2019-11-11 06:35:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  簡(jiǎn)單工廠模式

  參考大話設(shè)計(jì)模式中簡(jiǎn)單工廠模式,以兩個(gè)數(shù)字的加減乘除運(yùn)算為例來(lái)分析簡(jiǎn)單工廠模式的優(yōu)缺點(diǎn)

  分析思考

  1.從分層角度思考,數(shù)據(jù)計(jì)算和數(shù)據(jù)輸入體現(xiàn)在業(yè)務(wù)處理和業(yè)務(wù)展示兩個(gè)層面上,因此不能將兩者進(jìn)行雜糅,封裝越發(fā)獨(dú)立越好。

  2.程序中不同的地方在于計(jì)算方式的不同,所以對(duì)如何計(jì)算需要進(jìn)行單獨(dú)處理,不可能是通用的處理方式。

  業(yè)務(wù)開(kāi)發(fā)

 

package com.neutron.simple.factroy;/** * 操作抽象類(lèi) *  * @author neutron * */public abstract class Operate {	PRivate double numberA;	private double numberB;		/**	 * 數(shù)字計(jì)算方法	 * 	 * @return 	 */	public abstract double count();		public double getNumberA() {		return numberA;	}	public void setNumberA(double numberA) {		this.numberA = numberA;	}	public double getNumberB() {		return numberB;	}	public void setNumberB(double numberB) {		this.numberB = numberB;	}	@Override	public String toString() {		return "Operate [numberA=" + numberA + ", numberB=" + numberB + "]";	}	}  
package com.neutron.simple.factroy;/** * 加法操作類(lèi) *  * @author neutron * */public class OperateAdd extends Operate {	@Override	public double count() {		return this.getNumberA() + this.getNumberB();	}}  
package com.neutron.simple.factroy;/** * 減法操作類(lèi) *  * @author neutron * */public class OperateSub extends Operate {	@Override	public double count() {		return this.getNumberA() - this.getNumberB();	}}
package com.neutron.simple.factroy;/** * 工廠類(lèi) *  * @author neutron * */public class Factory {	/**	 * 獲取操作類(lèi)對(duì)象	 * 	 * @param operateMark 操作標(biāo)識(shí)	 * @return 操作對(duì)象	 */	public static Operate getInstance(String operateMark) {		Operate operate; 		switch(operateMark) {			case "+": operate = new OperateAdd();break; 			case "-": operate = new OperateSub();break; 			default:operate = new OperateAdd();break; 		}		return operate;	}}
/** * 業(yè)務(wù)邏輯處理 *  * 簡(jiǎn)單工廠設(shè)計(jì)模式 * 1.以兩個(gè)數(shù)據(jù)的操作為例 * 2.參考來(lái)源:大話設(shè)計(jì)模式 *  * 簡(jiǎn)單工廠優(yōu)缺點(diǎn)總結(jié): * 1.封裝變化,比如操作抽象類(lèi),所有的變化都是對(duì)數(shù)據(jù)的操作 * 2.增加可拓展性,符合開(kāi)閉原則,新增加的業(yè)務(wù)邏輯只需要繼承操作類(lèi)即可 * 3.工廠類(lèi)不沒(méi)有符合開(kāi)閉原則,但已經(jīng)將修改范圍盡可能縮小。 *  * 思考: * 和現(xiàn)實(shí)生活關(guān)聯(lián),那么就會(huì)減少知識(shí)孤島問(wèn)題的存在,不會(huì)出現(xiàn)出現(xiàn)學(xué)會(huì)就忘的情況。 * 如果羅馬只有幾條小道可以通向,那么它注定會(huì)被遺忘,但是如果上下入地水路無(wú)數(shù)條道路可以抵達(dá), * 那么一定會(huì)深刻記憶在腦海中,就會(huì)存在何時(shí)使用就可以通過(guò)幾種路徑獲取該知識(shí)。 */package com.neutron.simple.factroy;

  客戶端

 

package com.neutron.simple.client;import java.util.Scanner;import com.neutron.simple.factroy.Factory;import com.neutron.simple.factroy.Operate;public class CountClient {	public static void main(String[] args) {		Scanner scanner = new Scanner(System.in);		System.out.println("請(qǐng)輸入操作數(shù):");		double numberA = scanner.nextDouble();		System.out.println("請(qǐng)輸入操作符號(hào):(+/-)");		String operateMark = scanner.next();		System.out.println("請(qǐng)輸入被操作數(shù):");		double numberB = scanner.nextDouble();		scanner.close();				Operate oper = Factory.getInstance(operateMark);		oper.setNumberA(numberA);		oper.setNumberB(numberB);		System.out.println("操作結(jié)果是:" + oper.count());	}		/**	 * 不足:	 * 頁(yè)面展示邏輯中盡可能不要存在業(yè)務(wù)處理邏輯	 * 此處處在業(yè)務(wù)處理邏輯,因此此處封裝并不是十分到位。	 */}
/** * 客戶端操作界面 *  * @author neutron */package com.neutron.simple.client;

  運(yùn)行結(jié)果

請(qǐng)輸入操作數(shù):1請(qǐng)輸入操作符號(hào):(+/-)+請(qǐng)輸入被操作數(shù):1操作結(jié)果是:2.0  


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产99视频在线观看 | 久久久电影电视剧免费看 | 欧美黑人伦理 | 爱逼av| 美女视频黄视大全视频免费网址 | 中文字幕涩涩久久乱小说 | 被啪羞羞视频在线观看 | 中文字幕视频在线播放 | 久久久激情网 | 免费看毛片的网站 | 久久www视频| 在线视频观看一区二区 | 欧美一级黄 | 极色品影院 | 久久久久久久久久久久久久av | 成人不卡 | 国产精品视频一区二区三区四 | 欧美一级毛片特黄黄 | 亚洲午夜久久久精品一区二区三区 | 国产毛片网 | 欧美精品一区二区三区在线 | 日本aⅴ在线 | 日美av在线| 亚洲综合视频网 | 国产精品久久久久久久四虎电影 | 性看小视频 | 曰批全过程40分钟免费视频多人 | 欧美精品网址 | 毛片视频免费观看 | 日韩视频一区二区在线观看 | 日韩视频―中文字幕 | 免费高潮在线国 | 嫩呦国产一区二区三区av | 精品亚洲va在线va天堂资源站 | 欧美极品免费 | 久久久精品网 | 黄色片在线观看网站 | 精品久久一区二区三区 | 一区二区久久 | 4p一女两男做爰在线观看 | 欧美黑人伦理 |