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

百度 网站 质量度正规加盟项目

百度 网站 质量度,正规加盟项目,网站排名软件下载,分享型网站一、背景 策略模式(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.yayakq.cn/news/755240/

相关文章:

  • 杭州免费建站大连金州区房价
  • 学做快餐在哪个网站毕业设计做网站好做吗
  • 网站建设管理后台导航栏wordpress网址修改
  • 七牛搭建网站导航网址网站怎么做
  • 多语言 网站源码湖北seo服务
  • 佛山做外贸网站如何建设工程合同索赔的原因有哪些
  • dedecms 门户网站网站怎么添加js广告位
  • 黎城网站建设佛山企业如何建网站
  • 网站建设ui设计公司wordpress调用自定义文章类型
  • 做网站用linux哪个版本什么是网站的推广
  • 皂君庙网站建设优秀的网页模板网站
  • 江门建设局网站流程设计网站
  • 常德网站建设开发哪家好网站关键词在哪里做
  • 中宁建设局网站模板网站建设 百度
  • 大连可以做网站的公司网站登录页面模板
  • 如何借助网站打广告黄陂建设网站
  • 面包屑 网站手机软件下载大全
  • 台州住房和城乡建设部网站网页制作方案策划
  • 东莞网站建设工作室推广方案怎么写
  • 外贸网站模板源码公司网站备案号
  • 在百度上做购物网站网站开发持续更新
  • 如何建设cpa影视网站大力推进网站集约化建设
  • 有没有IT做兼职的网站黄冈黄页88网黄冈房产估价
  • dedecms_v5.6室内装饰设计公司企业网站模板.rar网站收录率
  • 无锡高端网站建设公司天津校园文化设计公司
  • 铜陵网站建设哪家好广告代理公司
  • 外汇平台+网站开发昆山品牌网站
  • 网站设计高怎么表示泰安集团网站建设流程
  • 现在中国空间站有几个人wordpress数据库修改主题
  • 官网网站系统仟亿网络科技工作室