工厂模式+策略模式

news/2025/1/24 12:05:28/

UML:

 class:

public interface IDeliveryService {/*** 创建第三方出货单* @param obj 入参*/Object createThirdOrder(Object obj);
}
@Service
@RequiredArgsConstructor
public class DeliveryServiceImpl implements IDeliveryService {private final DeliveryStrategyFactory deliveryStrategyFactory;@Overridepublic Object createThirdOrder(Object obj){// 根据type确定出库策略IDeliveryStrategy deliveryStrategy = deliveryStrategyFactory.getDeliveryStrategy(DeliveryPlatformEnum.MO_FANG);// 创建return deliveryStrategy.create((MoFangCreateOrderDTO )deliveryOrderDTO);}
}
@Component
public class DeliveryStrategyFactory implements ApplicationContextAware {private Map<DeliveryPlatformEnum,IDeliveryStrategy> deliveryStrategyMap = new HashMap<>();@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {Map<String, IDeliveryStrategy> beansOfType = applicationContext.getBeansOfType(IDeliveryStrategy.class);beansOfType.values().forEach(e-> deliveryStrategyMap.put(e.getDeliveryPlatformEnum(),e));}public IDeliveryStrategy getDeliveryStrategy(DeliveryPlatformEnum deliveryPlatformEnum){return deliveryStrategyMap.get(deliveryPlatformEnum);}
}
@Getter
public enum DeliveryPlatformEnum {/*** 魔方平台*/MO_FANG(1,"魔方");private final Integer code;private final String description;DeliveryPlatformEnum(Integer code,String description) {this.code = code;this.description = description;}
}
public interface IDeliveryStrategy {/*** 策略所属平台枚举* @return 。*/DeliveryPlatformEnum getDeliveryPlatformEnum();/*** 创建出货单* @param* @return*/Object create(Object obj);
}
@Service
@RequiredArgsConstructor
public class MoFangDeliveryStrategy implements IDeliveryStrategy {private final MoFangClient moFangClient;@Overridepublic DeliveryPlatformEnum getDeliveryPlatformEnum() {return DeliveryPlatformEnum.MO_FANG;}@Overridepublic Object create(Object obj){return JsonUtils.toObject(moFangClient.createOrder((MoFangCreateOrderDTO) obj), MoFangCreateOrderResponse.class);}}


http://www.ppmy.cn/news/946500.html

相关文章

WEB:题目名称-文件包含

背景知识 题目 题目了文件包含&#xff0c;所以想到了php伪协议 构造payload尝试读取flag.php /?filenamephp://filter/readconvert.base64-encode/resourceflag.php 页面提示“do not hack”猜测可能是黑名单检测敏感字符串。猜测字符串哪些被禁用&#xff0c;这里输入单个…

读书笔记-建立自己的声望

精心描绘出你想要创造的形象&#xff0c;利用媒体来帮助你建立知名度&#xff0c;让别人赞美你&#xff0c;并战略性地传达负面却不致命的个人信息&#xff0c;让雇用你和支持你的人即使充分了解你的一切弱点&#xff0c;但仍然选择雇用和支持你。

在1.76传奇里面声望的作用相当于晋升

在1.76传奇里面声望的作用相当于晋升,用户要想消除红名就需要用到声望&#xff0c;声望可以消除用户的PK值&#xff0c;清楚红名用声望是最好的办法&#xff0c;每一点声望就可以清楚用户100点PK值&#xff0c;是很多用户都会选择的方法&#xff0c;声望除了能清楚红名还可以用…

vs声望过低不能进入房间_科技的伏都教声望:不公平且无根据

vs声望过低不能进入房间 Ask any engineer the question, “is technology disruptive”, and the answer will be “of course!” 询问任何工程师“技术是否具有破坏性”的问题&#xff0c;答案将是“当然&#xff01;”。 The result of that disruption is often that tech…

2017深度学习最新报告及8大主流深度学习框架超详细对比(内含PPT)

2017深度学习最新报告&#xff08;PPT&#xff09; ​ 深度学习领军人物 Yoshua Bengio 主导的蒙特利尔大学深度学习暑期学校目前“深度学习”部分的报告已经全部结束。 本年度作报告的学术和行业领袖包括有来自DeepMind、谷歌大脑、蒙特利尔大学、牛津大学、麦吉尔大学、多伦多…

想不想修真鸿蒙之礼奖励,想不想修真血浮屠收益有多少 声望掉落奖励一览

在想不想修真中&#xff0c;有了狗或者猪之后就能刷血浮屠了。而血浮屠是一个专门获取声望的地方&#xff0c;不过有的玩家表示血浮屠的性价比不高&#xff0c;那么究竟值不值得刷呢&#xff1f;下面就让我们一起来看看想不想修真血浮屠收益有多少吧。 很多玩家都在表示&#x…

声望是什么?

声望是什么&#xff1f; 声望值是对您在社区信誉的粗略测量。其他用户对您解答问题的能力越信任&#xff0c;声望值就越高。网站的基本功能&#xff0c;比如提问&#xff0c;回答&#xff0c;编辑等是不需要声望值的&#xff0c;但是随着您声望值的增加&#xff0c;您可以享受更…