首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

狂言设计模式_策略模式

2013-03-12 
大话设计模式_策略模式本文以 商场促销 为例子来实现这种模式。商场三种活动:1.按照原来价收费2.八折收费3.

大话设计模式_策略模式

本文以 商场促销 为例子来实现这种模式。

商场三种活动:

1.按照原来价格收费

2.八折收费

3.满300反100


一:工厂模式实现

二:策略模式实现

三:工厂+策略模式实现

package com.wzs.three;/** * 策略模式和工厂模式结合 *  * @author Administrator *  */public class StrategyAndFactory {public static void main(String[] args) {System.out.println(new CashContext(1).getResult(500));System.out.println(new CashContext(2).getResult(500));System.out.println(new CashContext(3).getResult(500));System.out.println(new CashContext(4).getResult(500));}}/* * 收费策略 */class CashContext {private CashSuper cashSuper;public CashContext(int type) {switch (type) {case 1:System.out.println("正常收费.");cashSuper = new CashNormal();break;case 2:System.out.println("八折收费.");cashSuper = new CashRebate(0.8);break;case 3:System.out.println("满300反100.");cashSuper = new CashReturn(300, 100);break;default:System.out.println("默认正常收费.");cashSuper = new CashNormal();break;}}public double getResult(double money) {return cashSuper.acceptCash(money);}}/* * 现金收取抽象类 */abstract class CashSuper {public abstract double acceptCash(double money);}/* * 正常收费 */class CashNormal extends CashSuper {@Overridepublic double acceptCash(double money) {return money;}}/* * 打折收费 */class CashRebate extends CashSuper {private double moneyRebate = 1d;// 打折率public CashRebate(double moneyRebate) {this.moneyRebate = moneyRebate;}@Overridepublic double acceptCash(double money) {return money * moneyRebate;}}/* * 返利 */class CashReturn extends CashSuper {private double moneyCondition = 0d;// 返利条件private double moneyReturn = 0d;// 返利值public CashReturn(double moneyCondition, double moneyReturn) {this.moneyCondition = moneyCondition;this.moneyReturn = moneyReturn;}@Overridepublic double acceptCash(double money) {if (money >= moneyCondition) {return money - Math.floor(money / moneyCondition) * moneyReturn;}return money;}}


1楼adam_zs前天 22:05
[code=java]n输出结果:n正常收费.n500.0n八折收费.n400.0n满300反100.n400.0n默认正常收费.n500.0nn[/code]

热点排行