当前位置: 首页 > news >正文

dede网站婚纱模板网络营销推广网站

dede网站婚纱模板,网络营销推广网站,2019年政府网站建设重点,如何做钓鱼网站一、背景 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 二、结构 策略模式主要包含三个角色&…

一、背景

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。

二、结构

策略模式主要包含三个角色:

  • Strategy(策略接口):定义了所有支持的所有算法的公共接口。
  • ConcreteStrategy(具体策略):实现了 Strategy 接口,提供了具体的算法实现。
  • Context(上下文):维护了一个对 Strategy 对象的引用,通常在构造函数中传入具体的策略对象,并通过一个方法让策略接口的实现生效。

三、示例代码

假设我们需要获取每个班级的学生人数,只是简单的一个示例:

3.1 创建班级的枚举类
/*** 班级信息枚举*/
@AllArgsConstructor
@Getter
public enum ClassEnum {CLASS_1A("1A", "一年级一班", 25),CLASS_1B("1B", "一年级二班", 32);// 班级代码private final String classCode;// 班级名称private final String className;// 班级人数private final int numberOfStudents;public static ClassEnum getByClassCode(String classCode) {return Arrays.stream(ClassEnum.values()).filter(classInfo -> classInfo.getClassCode().equals(classCode)).findFirst().orElse(null);}
}
3.2 抽象类
/*** 抽象处理类*/
public abstract class AbstractClassHandle {public abstract String getCode();public abstract int getCount();}
3.3 简单工厂
/*** 简单工厂类**/
@Component
public class ClassExecuteServiceFactory implements ApplicationContextAware {private final static Map<String, AbstractClassHandle> CLASS_CODE_ABSTRACT_CLASS_HANDLE_MAP = new HashMap<>();@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {Map<String, AbstractClassHandle> types = applicationContext.getBeansOfType(AbstractClassHandle.class);types.values().forEach(e -> CLASS_CODE_ABSTRACT_CLASS_HANDLE_MAP.putIfAbsent(e.getCode(), e));}public static AbstractClassHandle getHandler(String code) {return CLASS_CODE_ABSTRACT_CLASS_HANDLE_MAP.get(code);}
}
3.4 两个不同的处理类

ClassOneExecuteServiceHandle 班级一

/*** 1班handle类**/
@Component
public class ClassOneExecuteServiceHandle extends AbstractClassHandle {@Overridepublic String getCode() {return ClassEnum.CLASS_1A.getClassCode();}@Overridepublic int getCount() {return ClassEnum.CLASS_1A.getNumberOfStudents();}
}

ClassTwoExecuteServiceHandle 班级二

/*** 2班handle类**/
@Component
public class ClassTwoExecuteServiceHandle extends AbstractClassHandle {@Overridepublic String getCode() {return ClassEnum.CLASS_1B.getClassCode();}@Overridepublic int getCount() {return ClassEnum.CLASS_1B.getNumberOfStudents();}
}
3.5 测试请求类
/*** @author Jerryean* @description 测试策略方式*/
@Api(tags = "测试策略方式")
@RestController
@RequestMapping("/strategy")
public class AbstractTestController {@GetMapping("/abstractTest")@ApiOperation("策略模式-简单测试")public BaseResponse<Integer> abstractTest(@RequestParam(value = "classCode") String classCode) {int count = ClassExecuteServiceFactory.getHandler(classCode).getCount();return BaseResponse.data(count);}
}

四、总结

策略模式非常适合那些需要在运行时动态改变行为的场景。
策略模式是一种非常实用的设计模式,可以帮助开发人员编写更加灵活和可维护的代码。

http://www.mmbaike.com/news/24394.html

相关文章:

  • wordpress the7数据库seo职业规划
  • 网站内容管理上海比较好的seo公司
  • 做汽车的网站宁波网站建设与维护
  • 网站模板首页百度指数分析报告案例
  • 霸州做网站的重庆森林电影简介
  • 网站如何做内部链接长沙seo
  • 网站开发net教程软文案例500字
  • 黑龙江网站建站建设在百度上怎么卖自己的产品
  • 网页设计班级网站怎么做网站推广100种方法
  • ecshop生成网站地图url重复新闻发布平台
  • 男女做吃动态网站品牌推广外包公司
  • 牡丹区住房城乡建设局网站网站优化排名易下拉霸屏
  • 沈阳微网站企业文化建设
  • 南阳公司网站制作邯郸网站建设优化
  • 建站的注意事项推广普通话手抄报内容简短
  • 做拍客哪个网站好搜索引擎网址
  • 网站制作的内容什么好网络快速推广渠道
  • 网上做衣服的网站有哪些百度关键字优化精灵
  • 什么做电子书下载网站好关键词排名优化易下拉技巧
  • 代做毕设要注册答疑网站搜索引擎营销的基本流程
  • 交易平台网站开发教程百度云企业网站推广有哪些方式
  • 一般做网站宽度是多少营销策划案ppt优秀案例
  • 佛山网站建设有限公司设计公司网站
  • 廊坊网站建设方案服务济南优化哪家好
  • 免费微信微网站模板下载小说搜索风云榜排名
  • 做网站需要工具苏州网站
  • 苏州退工在哪个网站做宁波企业网站seo
  • 微网站搭建的步骤和技巧重庆seo推广服务
  • 企业网站管理系统用哪个好网络服务提供者收集和使用个人信息应当符合的条件有
  • 建设积分网站长沙百度贴吧