java工厂模式和策略模式,设计模式的工厂模式

  java工厂模式和策略模式,设计模式的工厂模式

  场景:设计一个交易系统中的子模块-扣款子模块

  扣款子模块中主要包括两部分:

  1.集成电路卡类和交易信息类

  其中集成电路卡中包括两种金额:固定金额和自由金额;交易信息类负责记录每一笔交易。

  2.扣款策略类

  扣款策略有以下两种:

  a.集成电路卡固定金额=集成电路卡现有固定金额-交易金额/2

  集成电路卡自由金额=集成电路卡自由金额-交易金额/2

  b.全部消费从集成电路卡自由金额中扣除

  类图实现:

  主要涉及如下几个角色:

  1.集成电路卡类和交易类

  2.扣款策略接口

  3.扣款策略的封装类

  4.策略枚举类

  5.策略工厂

  6.扣款模块封装

  7.场景类

  代码实现

  卡片类:

  打包org。阿帕奇。Java。设计模式。工厂和战略;

  公共类别卡{

  私有字符串编号;

  私有int steadyMoney//卡内固定交易金额

  private int freeMoney//卡内自由交易金额

  公共字符串getNo() {

  返回否;

  公共空集合号(字符串号){

  否=否;

  public int getSteadyMoney() {

  返还稳定资金;

  public void setSteadyMoney(int steadyMoney){

  这个。稳钱=稳钱;

  public int getFreeMoney() {

  返还闲钱;

  public void setFreeMoney(int freeMoney){

  这个。闲钱=闲钱;

  贸易类:

  公共布尔执行(卡卡,贸易贸易){

  int半钱=(int)数学。rint(贸易。get mount()/2.0);

  卡。setsteadymoney(卡。getsteadymoney()-半钱);

  卡。设置免费货币(卡。获得免费的钱()-半钱);

  返回真实的

  公共类自由演绎实现I减少{

  公共布尔执行(卡卡,贸易贸易){

  卡。setfreemoney(卡。获得免费货币()-交易。get mount());

  返回真实的

  }

  扣款策略封装

  公共布尔执行(卡卡,贸易贸易){

  返回this.deduction.exec(卡,贸易);

  }

  策略枚举

  稳定扣除(组织。阿帕奇。Java。设计模式。工厂和战略。稳扣),

  自由扣除(组织。阿帕奇。Java。设计模式。工厂和战略。自由扣除’);

  字符串值="";

  私有策略管理(字符串值){

  这个值=值

  公共字符串getValue() {

  返回值;

  策略工厂

  公共静态ideuceducation(策略管理策略){

  IDeduction扣除=空

  尝试{

  演绎=(I扣)类。forname(策略。getvalue()).新实例();

  } catch(异常e) {

  e。printstacktrace();

  退货扣除;

  }

  扣款模块封装

  私有静态策略管理getDeducationType(贸易贸易){

  if (trade.getTradeNo().包含( ABC ){

  退货策略管理。自由演绎;

  }否则{

  退货策略管理。稳定演绎;

  }

  场景类

  在该场景中用到如下几个设计模式:

  策略(策略)模式:负载对扣款策略进行封装,保证了两个策略可以自由的切换。

  工厂(工厂)模式:修正策略模式必须对外暴露具体策略的问题,由工厂模式直接产生一个具体策略对象,其他模块则不需要依赖具体策略。

  门面(正面)模式:负责对复杂的扣款系统进行封转,封转的结果就是避免高层模块深入子系统内部,同时提供系统高内聚、低耦合的特性。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: