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

wordpress图片站主题优化推广网站推荐

wordpress图片站主题,优化推广网站推荐,查询网站域名,江阴网站建设推广一、背景 策略模式(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.rdtb.cn/news/21447.html

相关文章:

  • 创科手机网站友情链接如何交换
  • 天河做网站哪家强重庆seo排名软件
  • 网站首页原型图咋做游戏广告投放平台
  • 雷军做的网站网推渠道
  • 东莞短视频推广是的最好的网站优化公司
  • 网站 目录 结构盘搜搜
  • 济南网站建设联 系小七成人零基础学电脑培训班
  • 上的网站app免费大全中小企业网站制作
  • 泊头网站优化网络营销成功案例分析
  • 深圳定制网站制作南京seo
  • 公司专业设计网站seo搜索引擎优化是
  • 免费b2c的网站有哪些seo研究学院
  • 网站平台建设属于什么采购百度首页排名代发
  • flash手机网站制作百度关键词排名怎么查
  • 自己做网站卖什么名字安全优化大师
  • 国外一家做乳胶衣视频的网站百度引擎提交入口
  • 北龙中网 可信网站验证 费用seo网站推广
  • 网站的容量网站友链外链
  • 个人网站 摄影展示品牌营销策划公司
  • 17一起做网店网站网络营销的目标
  • 家电维修做网站生意怎么样优化设计三年级下册数学答案
  • 网站上传小马后怎么做网站seo快速
  • 河东做网站的公司大侠seo外链自动群发工具
  • 网站开发与设计强化防疫指导
  • 徐州手机网站优化公司域名被墙污染查询
  • 专业做外贸网站百度关键词搜索次数
  • wordpress菜单怎么用西安seo盐城
  • 有了源代码怎么做网站游戏推广代理平台
  • 生活门户网站开发方案淘宝推广运营
  • wordpress 快站电脑培训班一般多少钱