工厂模式代码参考

public interface IChannelFactoryService {
    /**
     * 发送验证码
     * @param channelCode 类型
     */
    void sendAuthCode(String channelCode);
}
@Service
public class ChannelFactoryServiceImpl implements IChannelFactoryService {

    @Resource
    private ChannelBeanFactory channelBeanFactory;

    @Override
    public void sendAuthCode(String channelCode){
        if (StrUtil.isEmpty(channelCode)) {
            throw new Exception("异常");
        }
        AuthCodeFacade authCodeFacade = (AuthCodeFacade) channelBeanFactory.getService(channelCode);
        authCodeFacade.sendAuthCode(channelCode);
    }
}
public interface AuthCodeFacade {
    /**
     * 发送验证码
     * @return
     */
    void sendAuthCode(String channelCode);
}
@Service("channelCode")
public class SendMailServiceImpl implements AuthCodeFacade {
    @Override
    public void sendAuthCode(String channelCode) {
        xxx
        xxx
    }
}

工厂

@Component("channelBeanFactory")
public class ChannelBeanFactory implements BeanFactoryAware {

    private BeanFactory beanFactory;

    /**
     * 根据通道编码获取具体实体类
     *
     * @param channelCode 通道编码
     * @return
     */
    public Object getService(String channelCode) {
        return beanFactory.getBean(channelCode);
    }

    public <T> T getService(String name, Class<T> requiredType) {
        return beanFactory.getBean(name, requiredType);
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值