首页 / 设计模式 / 五、设计模式之策略模式
五、设计模式之策略模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了五、设计模式之策略模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2088字,纯文字阅读大概需要3分钟。
内容图文
策略模式就是提供一组固定算法的策略,客户根据自己的需求选择其中一种策略进行执行。
特点:
- 预先明确的一组固定算法策略
- 客户需要选择其中一种策略
场景:
- 网络爬虫,针对不同的网站,预先提供不同的解析算法
- 网站预先提供多种登录策略,用户可以任选一种登录方式(用户名密码等,微信登录,QQ登录)
- 订单支付策略,客户任选一种支付方式(支付宝,微信支付,银联卡支付)
实现方式案例:(实现易扩展,屏蔽if_else_if)
代码:
定义登录策略:
package com.kancy.pattern.strategy; public interface LoginStrategy { public void login(); }
package com.kancy.pattern.strategy; public class QQLoginStrategy implements LoginStrategy{ @Override publicvoid login() { System.out.println("用户选择QQ登录方式登录!"); } }
package com.kancy.pattern.strategy; public class WXLoginStrategy implements LoginStrategy { @Override publicvoid login() { System.out.println("用户选择微信登录方式登录!"); } }
package com.kancy.pattern.strategy; public class DefaultLoginStrategy implements LoginStrategy { @Override publicvoid login() { System.out.println("用户选择默认的用户名和密码的形式登录!"); } }
用户登录服务:
package com.kancy.pattern.strategy; public class LoginService { public void login(String loginType){ LoginStrategy loginStrategy = LoginStrategyType.getLoginStrategy(loginType); loginStrategy.login(); } }
注册策略,统一管理
package com.kancy.pattern.strategy; public enum LoginStrategyType { QQ("qq", new QQLoginStrategy()), WX("wx", new WXLoginStrategy()), DEFAULT("default", new DefaultLoginStrategy()); private String loginType; private LoginStrategy loginStrategy; LoginStrategyType (String loginType, LoginStrategy loginStrategy){ this.loginType = loginType; this.loginStrategy = loginStrategy; } /** * 通过标志来获取对应的登录策略,扩展新的登录策略只需要更改策略注册 * @param name * @return*/publicstatic LoginStrategy getLoginStrategy(String name) { LoginStrategyType[] values = values(); for (LoginStrategyType strategy:values ) { if(strategy.getLoginType().equals(name)){ return strategy.getLoginStrategy(); } } returnnull; } public String getLoginType() { return loginType; } public LoginStrategy getLoginStrategy() { return loginStrategy; } }
用户选择一种策略进行登录:
package com.kancy.pattern.strategy; public class UserLogin { public static void main(String[] args) { LoginService loginService = new LoginService(); loginService.login("qq"); } }
原文:https://www.cnblogs.com/kancy/p/10230969.html
内容总结
以上是互联网集市为您收集整理的五、设计模式之策略模式全部内容,希望文章能够帮你解决五、设计模式之策略模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。