首页 > 数据库 > 数据库开发技术 > 工厂模式--大侠,您要预定金疮药还是黑玉断续膏?

abstract public class Drug {/*** 药品名称*/String name;/*** 功效*/String efficacy;public void packing() {System.out.println("打包药品:" + name);}@Overridepublic String toString() { // 药丸的功效StringBuffer display = new StringBuffer();display.append("---- " + name + " 使用说明 ----\n");display.append("具有功效:" + efficacy + "\n");return display.toString();}}
public class XingJunDanDrug extends Drug{public XingJunDanDrug() {name = "行军丹";System.out.println("开始制作:祖传秘法秘制七天");System.out.println("制作完成-->行军丹");efficacy = "江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点。";}}
public class JinChuangYaoDrug extends Drug{public JinChuangYaoDrug() {name = "金疮药";System.out.println("开始制作:祖传秘法秘制七七四十九天");System.out.println("制作完成-->金疮药");efficacy = "闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点。";}}
public class HeiYuDuanXuGaoDrug extends Drug{public HeiYuDuanXuGaoDrug() {name = "黑玉断续膏";System.out.println("开始制作:祖传秘法秘制九九八十一天");System.out.println("制作完成-->黑玉断续膏");efficacy = "传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点。";}}
public class Drugstore {/*** 药房接到订单生产药品* @param type* @return*/public Drug orderDrug(String type) {Drug drug = null;System.out.println("接到订单:" + type);// 生产药品if("行军丹".equals(type)) {drug = new XingJunDanDrug();} else if("金疮药".equals(type)) {drug = new JinChuangYaoDrug();} else if("黑玉断续膏".equals(type)) {drug = new HeiYuDuanXuGaoDrug();}// 打包药品drug.packing();return drug;}}
public class DrugstoreTest {public static void main(String[] args) {Drugstore drugstore = new Drugstore();System.out.println("为保证品质,本店所有药品只接受预定:");System.out.println();// 药房接到行军丹订单Drug drug = drugstore.orderDrug("行军丹");System.out.println(drug);// 药房接到金疮药订单drug = drugstore.orderDrug("金疮药");System.out.println(drug);// 药房接到黑玉断续膏订单drug = drugstore.orderDrug("黑玉断续膏");System.out.println(drug);}}
为保证品质,本店所有药品只接受预定:接到订单:行军丹开始制作:祖传秘法秘制七天制作完成-->行军丹打包药品:行军丹---- 行军丹 使用说明 ----具有功效:江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点。接到订单:金疮药开始制作:祖传秘法秘制七七四十九天制作完成-->金疮药打包药品:金疮药---- 金疮药 使用说明 ----具有功效:闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点。接到订单:黑玉断续膏开始制作:祖传秘法秘制九九八十一天制作完成-->黑玉断续膏打包药品:黑玉断续膏---- 黑玉断续膏 使用说明 ----具有功效:传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点。



public class SimpleDrugFactory {/*** 生产药品* @param type* @return*/public static Drug createDrug(String type) {Drug drug = null;// 生产药品if ("行军丹".equals(type)) {drug = new XingJunDanDrug();} else if ("金疮药".equals(type)) {drug = new JinChuangYaoDrug();} else if ("黑玉断续膏".equals(type)) {drug = new HeiYuDuanXuGaoDrug();} else if ("灵葫仙丹".equals(type)) {drug = new LinHuXianDanDrug();}return drug;}}
public class Drugstore {/*** 药房接到订单生产药品* @param type* @return*/public Drug orderDrug(String type) {Drug drug = null;System.out.println("接到订单:" + type);// 通过工厂生产药品drug = SimpleDrugFactory.createDrug(type);// 打包药品drug.packing();return drug;}}



public interface IDrugFactory {/*** 生产药品* @return*/Drug createDrug();}
public class XingJunDanDrugFactory implements IDrugFactory{public Drug createDrug() {return new XingJunDanDrug();}}
public class JinChuangYaoDrugFactory implements IDrugFactory {public Drug createDrug() {return new JinChuangYaoDrug();}}
public class HeiYuDuanXuGaoDrugFactory implements IDrugFactory{public Drug createDrug() {return new HeiYuDuanXuGaoDrug();}}
public class Drugstore {/*** 药房接到订单生产药品* @param type* @return*/public Drug orderDrug(String type) {IDrugFactory drugFactory = null;Drug drug = null;System.out.println("接到订单:" + type);// 获取对应的工厂if ("行军丹".equals(type)) {drugFactory = new XingJunDanDrugFactory();} else if ("金疮药".equals(type)) {drugFactory = new JinChuangYaoDrugFactory();} else if ("黑玉断续膏".equals(type)) {drugFactory = new HeiYuDuanXuGaoDrugFactory();} else if ("灵葫仙丹".equals(type)) {drugFactory = new LinHuXianDanDrugFactory();}// 生产对应的药品drug = drugFactory.createDrug();// 打包药品drug.packing();return drug;}}

public class DrugFactoryMap {private static final Map<String, IDrugFactory> cachedFactories = new HashMap<String, IDrugFactory>();static {cachedFactories.put("行军丹", new XingJunDanDrugFactory());cachedFactories.put("金疮药", new JinChuangYaoDrugFactory());cachedFactories.put("黑玉断续膏", new HeiYuDuanXuGaoDrugFactory());cachedFactories.put("灵葫仙丹", new LinHuXianDanDrugFactory());}public static IDrugFactory getFactory(String type) {if(type == null || type.isEmpty()) {return null;}return cachedFactories.get(type);}}


abstract public class Drug {/*** 药品名称*/String name;/*** 功效*/String efficacy;public void packing() {System.out.println("打包药品:" + name);}@Overridepublic String toString() {// 药丸的功效StringBuffer display = new StringBuffer();display.append("---- " + name + " 使用说明 ----\n");display.append("具有功效:" + efficacy + "\n");return display.toString();}}
public class XingJunDanDrug extends Drug {public XingJunDanDrug() {name = "行军丹";System.out.println("开始制作:祖传秘法秘制七天");System.out.println("制作完成-->行军丹");efficacy = "江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点。";}}
public class JinChuangYaoDrug extends Drug {public JinChuangYaoDrug() {name = "金疮药";System.out.println("开始制作:祖传秘法秘制七七四十九天");System.out.println("制作完成-->金疮药");efficacy = "闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点。";}}
public class HeiYuDuanXuGaoDrug extends Drug {public HeiYuDuanXuGaoDrug() {name = "黑玉断续膏";System.out.println("开始制作:祖传秘法秘制九九八十一天");System.out.println("制作完成-->黑玉断续膏");efficacy = "传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点。";}}
public class SuperXingJunDanDrug extends Drug {public SuperXingJunDanDrug() {name = "超级行军丹";System.out.println("开始制作:祖传秘法秘制七天");System.out.println("制作完成-->超级行军丹");efficacy = "江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点,具备超级功效-->同时恢复50点内力。";}}
public class SuperJinChuangYaoDrug extends Drug {public SuperJinChuangYaoDrug() {name = "超级金疮药";System.out.println("开始制作:祖传秘法秘制七七四十九天");System.out.println("制作完成-->超级金疮药");efficacy = "闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点,具备超级功效-->同时恢复250点内力。";}}
public class SuperHeiYuDuanXuGaoDrug extends Drug {public SuperHeiYuDuanXuGaoDrug() {name = "超级黑玉断续膏";System.out.println("开始制作:祖传秘法秘制九九八十一天");System.out.println("制作完成-->超级黑玉断续膏");efficacy = "传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点,具备超级功效-->同时恢复1000点内力。";}}
public interface IDrugFactory {/*** 生产药品* @return*/Drug createDrug(String type);}
public class NormalDrugFactory implements IDrugFactory {/*** 生产普通药品* @param type* @return*/public Drug createDrug(String type) {Drug drug = null;// 生产药品if ("行军丹".equals(type)) {drug = new XingJunDanDrug();} else if ("金疮药".equals(type)) {drug = new JinChuangYaoDrug();} else if ("黑玉断续膏".equals(type)) {drug = new HeiYuDuanXuGaoDrug();}return drug;}}
public class SuperDrugFactory implements IDrugFactory{/*** 生产超级药品* @param type* @return*/public Drug createDrug(String type) {Drug drug = null;// 生产超级药品if ("行军丹".equals(type)) {drug = new SuperXingJunDanDrug();} else if ("金疮药".equals(type)) {drug = new SuperJinChuangYaoDrug();} else if ("黑玉断续膏".equals(type)) {drug = new SuperHeiYuDuanXuGaoDrug();}return drug;}}
public class Drugstore {/*** 药房接到订单生产药品* @param type* @return*/public Drug orderDrug(String type, boolean isVip) {IDrugFactory drugFactory = null;if(isVip) {drugFactory = new SuperDrugFactory();System.out.println("接到VIP订单:" + type + " 切换超级工厂");} else {drugFactory = new NormalDrugFactory();System.out.println("接到普通订单:" + type + " 切换普通工厂");}// 通过工厂生产药品Drug drug = drugFactory.createDrug(type);// 打包药品drug.packing();return drug;}}
public class DrugstoreTest {public static void main(String[] args) {// 是否vip客户boolean isVip = false;Drugstore drugstore = new Drugstore();System.out.println("为保证品质,本店所有药品只接受预定:");System.out.println();// 药房接到行军丹订单Drug drug = drugstore.orderDrug("行军丹", isVip);System.out.println(drug);// 药房接到金疮药订单drug = drugstore.orderDrug("金疮药", isVip);System.out.println(drug);// 药房接到黑玉断续膏订单drug = drugstore.orderDrug("黑玉断续膏", isVip);System.out.println(drug);}}
为保证品质,本店所有药品只接受预定:接到普通订单:行军丹 切换普通工厂开始制作:祖传秘法秘制七天制作完成-->行军丹打包药品:行军丹---- 行军丹 使用说明 ----具有功效:江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点。接到普通订单:金疮药 切换普通工厂开始制作:祖传秘法秘制七七四十九天制作完成-->金疮药打包药品:金疮药---- 金疮药 使用说明 ----具有功效:闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点。接到普通订单:黑玉断续膏 切换普通工厂开始制作:祖传秘法秘制九九八十一天制作完成-->黑玉断续膏打包药品:黑玉断续膏---- 黑玉断续膏 使用说明 ----具有功效:传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点。
为保证品质,本店所有药品只接受预定:接到VIP订单:行军丹 切换超级工厂开始制作:祖传秘法秘制七天制作完成-->超级行军丹打包药品:超级行军丹---- 超级行军丹 使用说明 ----具有功效:江湖中常见的疗伤药丸,尺寸小,便于携带,服用后见效快,恢复生命100点,具备超级功效-->同时恢复50点内力。接到VIP订单:金疮药 切换超级工厂开始制作:祖传秘法秘制七七四十九天制作完成-->超级金疮药打包药品:超级金疮药---- 超级金疮药 使用说明 ----具有功效:闻名天下的佛门疗伤奇药,闯荡江湖必备,加速愈合,服用后立即恢复生命500点,具备超级功效-->同时恢复250点内力。接到VIP订单:黑玉断续膏 切换超级工厂开始制作:祖传秘法秘制九九八十一天制作完成-->超级黑玉断续膏打包药品:超级黑玉断续膏---- 超级黑玉断续膏 使用说明 ----具有功效:传说中的稀世秘药,有再造之力,神奇无比,其价堪比黄金,服用后立即恢复生命2500点,具备超级功效-->同时恢复1000点内力。

原文作者:编程我也会;如有侵权,请联系管理员删除。