当前位置: 首页> 游戏> 评测 > 全网营销推广方案外包_公司策划方案怎么做_编程培训_网站统计代码

全网营销推广方案外包_公司策划方案怎么做_编程培训_网站统计代码

时间:2025/7/11 15:38:13来源:https://blog.csdn.net/weixin_43811057/article/details/142904167 浏览次数:0次
全网营销推广方案外包_公司策划方案怎么做_编程培训_网站统计代码

一 枚举类

@Getter
public enum AuthTypeEnum {QCT_PASSWORD("qct_password", "密码"),MOBILE("mobile", "验证码");public final String code;public final String desc;AuthTypeEnum(String code, String desc) {this.code = code;this.desc = desc;}public static AuthTypeEnum getByCode(String codeVal) {for (AuthTypeEnum resultCodeEnum : AuthTypeEnum.values()) {if (resultCodeEnum.code.equals(codeVal)) {return resultCodeEnum;}}return null;}
}

二 抽象策略类

public abstract class AbstractLoginService {public static String login( String authType) {Map<String, AbstractLoginService> LoginServices = ApplicationConfiguration.getBeansOfType(AbstractLoginService.class);for (AbstractLoginService loginService : LoginServices.values()) {if (loginService.getType().equals(authType)) {loginService.doLogin(authType);return loginService.loginFinal(authType);}}throw new RuntimeException("无效的登录方式");}public abstract String getType();protected abstract void doLogin(String authType);protected abstract String loginFinal(String authType);
}

三 具体策略实现类

@Slf4j
@Service
public class CaptchaLoginService extends AbstractLoginService {@Overridepublic String getType() {return AuthTypeEnum.MOBILE.getCode();}@Overrideprotected void doLogin(String authType) {log.info("验证码登录");}@Overrideprotected String loginFinal(String authType) {return authType;}
}
@Slf4j
@Component
public class PasswordLoginService extends AbstractLoginService {@Overridepublic String getType() {return AuthTypeEnum.QCT_PASSWORD.getCode();}@Overrideprotected void doLogin(String authType) {log.info("密码登录");}@Overrideprotected String loginFinal(String authType) {return authType;}}

四 应用上下文配置

@Configuration
public class ApplicationConfiguration implements ApplicationContextAware {private static ApplicationContext applicationContext;public static <T> T getBean(Class<T> clazz) {return applicationContext.getBean(clazz);}public static Object getBean(String name) {return applicationContext.getBean(name);}public static <T> T getBean(String name, Class<T> clazz) {return applicationContext.getBean(name, clazz);}public static <T> Map<String, T> getBeansOfType(Class<T> clazz) {return applicationContext.getBeansOfType(clazz);}@Overridepublic void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {ApplicationConfiguration.applicationContext = applicationContext;}
}

五单元测试

@SpringBootTest
class LoginTest {@Testvoid loginPasswordTest() {String loginType = AuthTypeEnum.QCT_PASSWORD.code;String login = AbstractLoginService.login(loginType);System.out.println("login = " + login);}@Testvoid loginCaptchaTest() {String loginType = AuthTypeEnum.MOBILE.code;String login = AbstractLoginService.login(loginType);System.out.println("login = " + login);}}

源代码

关键字:全网营销推广方案外包_公司策划方案怎么做_编程培训_网站统计代码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: