使用设计模式创建多渠道
Posted 也许还年轻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用设计模式创建多渠道相关的知识,希望对你有一定的参考价值。
package com.job.center.quartz.service; /** * @author 周志伟 * @projectname 项目名称: ${project_name} * @classname: PayService * @description: 支付接口 * @date 2018/10/12:9:10 */ public interface PayService { public String sum(String key); }
package com.job.center.quartz.service.pay; import com.job.center.quartz.common.Pay; import com.job.center.quartz.dao.QrtzLogMapper; import com.job.center.quartz.service.PayService; import com.job.center.quartz.vo.QrtzLogDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author 周志伟 * @projectname 项目名称: ${project_name} * @classname: PayServiceImpl * @description: * @date 2018/10/12:9:11 */ @Pay(falg = 11) @Service("com.job.center.quartz.service.pay.PayServiceImpl") public class PayServiceImpl implements PayService { @Autowired private QrtzLogMapper dao; @Override public String sum(String key) { QrtzLogDTO qrtzLogDTO= dao.findQrtzLogByPrimaryKey(key); return "363666"; } }
package com.job.center.quartz.common; import com.job.center.quartz.service.PayService; import org.reflections.Reflections; import java.util.HashMap; import java.util.Set; /** * @author 周志伟 * @projectname 项目名称: ${project_name} * @classname: Payfactory * @description: * @date 2018/10/12:9:12 */ public class Payfactory { private Payfactory(){} /** * 饿汉式单利(线程安全) */ private static Payfactory single = new Payfactory(); public static Payfactory getInstance() { return single; } private static HashMap<Integer,String> map=new HashMap<Integer,String>(); public static PayService create(int id) throws Exception { return (PayService) SpringUtil.getBean(map.get(id)); } static { Reflections reflections = new Reflections("com.job.center.quartz.service.pay"); Set<Class<?>> set= reflections.getTypesAnnotatedWith(Pay.class); for (Class<?> el : set){ Pay annotation = el.getAnnotation(Pay.class); int key =annotation.falg(); String value=el.getName(); map.put(key,value); } } }
package com.job.center.quartz.controller; import com.job.center.quartz.common.Payfactory; import com.job.center.quartz.service.PayService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author 周志伟 * @projectname 项目名称: ${project_name} * @classname: TestController * @description: * @date 2018/10/12:15:10 */ @RestController @RequestMapping public class TestController { @Autowired private PayService payService; @RequestMapping("/TEST") public void test() throws Exception { Payfactory payfactory =Payfactory.getInstance(); payService=payfactory.create(11); payService.sum("11111"); } }
//反射类需要用到的包
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>RELEASE</version>
</dependency>
以上是关于使用设计模式创建多渠道的主要内容,如果未能解决你的问题,请参考以下文章
使用带有actionscript 3 Flash cs6的矩形或线条创建2D重复模式
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段
Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段