策略工厂模式

一,service代码实现类,可以看到UserService继承了AbstractUserService。AbstractUserService主要用于定义不同业务类型中的相同业务操作方法。例如在用户和客服服务中都存在添加用户,删除用户,修改用户信息等操作。

@Service(value = "userSerive")
public class UserSerive extends AbstractUserService{

    @Autowired
    private IUserInfoService userInfoService;

    @Override
    public void addUser(String userId) {
        UserInfo userInfo = new UserInfo();
        userInfo.setUserId(userId);
        userInfo.setUserSex("11");
        userInfoService.save(userInfo);
    }
}

二,AbstractUserService 类,主要定义业务方法。

public abstract class AbstractUserService {
    public void addUser(String userId){};
}

三,UserFactoryContent 工厂类,实现AbstractUserService类的选择。

@Component(value = "userFactoryContent")
public class UserFactoryContent {
    @Autowired
    public final Map<String,AbstractUserService> factory = new ConcurrentHashMap<>();

    public AbstractUserService getAbstractUserService(String userType){
        UserServiceEnum userServiceEnum = UserServiceEnum.valuesOf(userType);
        return factory.get(userServiceEnum.getUserServiceName());
    }
}

四,UserServiceEnum枚举类,实现请求中用户类型跟UserService类的对象关系映射

public enum UserServiceEnum {
    user_info("user_info","userSerive","用户服务"),
    cust_info("cust_info","custSerive","客户服务");
    private String userType;
    private String userServiceName;
    private String detailMsg;

五,controller中使用

public Result addUserInfo(@RequestBody JSONObject jsonObject){
        String userId = jsonObject.getString("userId");
        String userType = jsonObject.getString("userType");
        AbstractUserService userService = userFactoryContent.getAbstractUserService(userType);
        userService.addUser(userId);
        return new Result().success();
    }

博文为个人笔记使用,如果有同学参考中遇见问题可以随时联系讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值