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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。