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

姚家园做网站太原自动seo

姚家园做网站,太原自动seo,什么是网络营销详细点,html所有标签大全目录 1. 介绍 2. 目的 3. 实践 1. 介绍 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,将每种算法封装成具体的策略类,并使它们可以互相替换。策略模式使得算法可以独立于客户端而变化&#x…

目录

1. 介绍

2. 目的

3. 实践


1. 介绍

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,将每种算法封装成具体的策略类,并使它们可以互相替换。策略模式使得算法可以独立于客户端而变化,客户端可以在运行时动态地选择不同的策略来执行相应的算法。

在策略模式中,通常包括以下几个角色:

  1. Context(上下文): 上下文类持有一个策略对象的引用,它将客户端请求委派给具体的策略对象来执行相应的算法。上下文类通常包含一个可以动态切换策略的方法,以便在运行时选择不同的策略。
  2. Strategy(策略): 策略接口或抽象类定义了一个算法族,其中每个具体的策略类实现了这个接口或继承了这个抽象类。策略类封装了具体的算法实现,客户端通过上下文类调用策略对象的方法来执行算法。

  3. ConcreteStrategy(具体策略): 具体策略类实现了策略接口或抽象类,它包含了具体的算法实现。每个具体策略类实现了一种特定的算法,可以根据具体需求选择不同的具体策略类来执行相应的算法。

 策略模式的核心思想是将算法的实现和使用分离,使得算法可以独立变化而不影响客户端代码。通过策略模式,可以更好地组织和管理复杂的算法逻辑,提高代码的灵活性、可维护性和可扩展性。策略模式常用于需要动态地切换算法或根据不同条件选择不同算法的场景。

2. 目的

  • 消除大量的条件判断语句: 当代码中存在大量的if-else语句用于根据不同条件执行不同的逻辑时,策略模式可以帮助将不同的条件逻辑封装在不同的策略类中,从而避免代码臃肿和难以维护。
  • 提高代码的灵活性和可扩展性: 策略模式使得具体的策略类可以独立变化,客户端可以在运行时动态地选择不同的策略对象,从而实现系统的灵活性和可扩展性。

  • 避免代码重复: 将公共部分抽象到策略接口中,具体策略类只需实现自己特有的部分。

  • 提高代码的可读性和可维护性: 策略模式将算法的实现细节隐藏在具体策略类中,使得代码结构更清晰,易于理解和维护。

总的来说,策略模式可以帮助解决多个条件判断导致的代码复杂性、提高代码的灵活性和可扩展性,以及避免代码重复,从而提高代码质量和可维护性。

3. 实践

医嘱打印功能,多个打印模板,后续还会增加模板。

针对不同打印模板,进行不同数据处理。

使用策略模式就能很好解决此类问题。

//策略接口
public interface IPrintMethod {List<BiOrderPrint> doPrint(BiOrderPrintSaveBO bo, SysDicItemDTO dicItemDTO);default Map<String, List<BiOrderPrint>> toMap(List<BiOrderPrint> list) {return list.stream().collect(Collectors.groupingBy(BiOrderPrint::getFyFlag));}default List<BiOrderPrint> toList(Map<String, List<BiOrderPrint>> map) {return map.values().stream().flatMap(List::stream).collect(Collectors.toList());}
}//策略实现类1
@Component
@RequiredArgsConstructor
public class PqMethod implements IPrintMethod {private final HandlerOne handlerOne;private final HandlerTwo handlerTwo;private final HandlerThree handlerThree;private final HandlerFour handlerFour;private final HandlerFive handlerFive;private final HandlerLast handlerLast;@Overridepublic List<BiOrderPrint> doPrint(BiOrderPrintSaveBO bo, SysDicItemDTO dicItemDTO) {//1. 数据转换,数据预处理List<BiOrderPrint> biOrderPrintList = handlerOne.doHandler(bo);Map<String, List<BiOrderPrint>> map1 = toMap(biOrderPrintList);//2. 数据填充Map<String, List<BiOrderPrint>> map2 = handlerTwo.doHandler(map1);//3. 根据每页条数,分割部分Map<String, List<BiOrderPrint>> map3 = handlerThree.doHandler(map2, dicItemDTO);//4. 每个分页里面的数据均是小于等于n的,将数据补 全Map<String, List<BiOrderPrint>> map4 = handlerFour.doHandler(map3, dicItemDTO);List<BiOrderPrint> resultList = toList(map4);// 5. 处理特殊数据handlerFive.doHandler(bo);// 6. 报存return handlerLast.doHandler(resultList);}
}//策略实现类2
@Component
@RequiredArgsConstructor
public class SyMethod implements IPrintMethod {private final HandlerOne handlerOne;private final HandlerTwo handlerTwo;private final HandlerLast handlerLast;@Overridepublic List<BiOrderPrint> doPrint(BiOrderPrintSaveBO bo, SysDicItemDTO dicItemDTO) {// 1. 数据转换List<BiOrderPrint> biOrderPrintList = handlerOne.doHandler(bo);// 2. 过滤相同orderId的数据,只保留一份List<BiOrderPrint> list1 = new ArrayList<>(biOrderPrintList.stream().collect(Collectors.toMap(BiOrderPrint::getOrderId,Function.identity(),(existing, replacement) -> existing)).values());// 3. 数据填充Map<String, List<BiOrderPrint>> map1 = toMap(list1);Map<String, List<BiOrderPrint>> map2 = handlerTwo.doHandler(map1);List<BiOrderPrint> resultList = toList(map2);// 4. 报存return handlerLast.doHandler(resultList);}
}//......
//Context(上下文)
@Service
@RequiredArgsConstructor
public class OrderPrintContext {private final List<IPrintMethod> IPrintMethods;public List<BiOrderPrint> doPrint(BiOrderPrintSaveBO bo, SysDicItemDTO dicItemDTO) {//将所有策略实现类放到map里,前端传具体策略Map<String, IPrintMethod> printMethodMap = IPrintMethods.stream().collect(Collectors.toMap(IPrintMethod -> IPrintMethod.getClass().getSimpleName(), Function.identity()));if (ObjectUtil.isNull(dicItemDTO)) {throw new ServiceException(OrderErrorEnum.ERROR_82003, bo.getBillType());}IPrintMethod IPrintMethod = printMethodMap.get(dicItemDTO.getValue3());return IPrintMethod.doPrint(bo, dicItemDTO);}
}


文章转载自:
http://wanjiabanalize.bbmx.cn
http://wanjiaphantasmagory.bbmx.cn
http://wanjialuetin.bbmx.cn
http://wanjiahomothetic.bbmx.cn
http://wanjiasiegfried.bbmx.cn
http://wanjiapiedfort.bbmx.cn
http://wanjiascammony.bbmx.cn
http://wanjiafranglais.bbmx.cn
http://wanjiagraphiure.bbmx.cn
http://wanjiasaliferous.bbmx.cn
http://wanjiajudaize.bbmx.cn
http://wanjiapokie.bbmx.cn
http://wanjiaphilosophise.bbmx.cn
http://wanjiasubring.bbmx.cn
http://wanjiagertrude.bbmx.cn
http://wanjiadayflower.bbmx.cn
http://wanjiakindlessly.bbmx.cn
http://wanjiatrolly.bbmx.cn
http://wanjianewissue.bbmx.cn
http://wanjiabursar.bbmx.cn
http://wanjiastump.bbmx.cn
http://wanjiaadverb.bbmx.cn
http://wanjialaboring.bbmx.cn
http://wanjiadepersonalize.bbmx.cn
http://wanjiaprismatic.bbmx.cn
http://wanjiaantibacterial.bbmx.cn
http://wanjianj.bbmx.cn
http://wanjiagotten.bbmx.cn
http://wanjiakrim.bbmx.cn
http://wanjiasake.bbmx.cn
http://wanjiareynold.bbmx.cn
http://wanjialimpingly.bbmx.cn
http://wanjiadiplopy.bbmx.cn
http://wanjiadirigibility.bbmx.cn
http://wanjiaxxxv.bbmx.cn
http://wanjiapreference.bbmx.cn
http://wanjiasintra.bbmx.cn
http://wanjiarespect.bbmx.cn
http://wanjiadensitometry.bbmx.cn
http://wanjiamicrosection.bbmx.cn
http://wanjiawoodcutting.bbmx.cn
http://wanjiaforman.bbmx.cn
http://wanjiarimal.bbmx.cn
http://wanjiaensoul.bbmx.cn
http://wanjiaconfederate.bbmx.cn
http://wanjiagalloglass.bbmx.cn
http://wanjiaplumbicon.bbmx.cn
http://wanjiaslezsko.bbmx.cn
http://wanjiadrfeelgood.bbmx.cn
http://wanjiacuticular.bbmx.cn
http://wanjiacolumelliform.bbmx.cn
http://wanjiapernickety.bbmx.cn
http://wanjialed.bbmx.cn
http://wanjiajew.bbmx.cn
http://wanjiatransfuse.bbmx.cn
http://wanjianonaggression.bbmx.cn
http://wanjiaarginine.bbmx.cn
http://wanjiafeces.bbmx.cn
http://wanjiaammoniacal.bbmx.cn
http://wanjiadispose.bbmx.cn
http://wanjiakopje.bbmx.cn
http://wanjiaanise.bbmx.cn
http://wanjiaceratoid.bbmx.cn
http://wanjiadispirit.bbmx.cn
http://wanjiahairless.bbmx.cn
http://wanjiaimmaculacy.bbmx.cn
http://wanjiaacred.bbmx.cn
http://wanjiaatmologist.bbmx.cn
http://wanjiamesodont.bbmx.cn
http://wanjiaphonotypy.bbmx.cn
http://wanjiainvigorative.bbmx.cn
http://wanjiaunchanged.bbmx.cn
http://wanjiakeratectomy.bbmx.cn
http://wanjiaunderlap.bbmx.cn
http://wanjiakweilin.bbmx.cn
http://wanjiaindelible.bbmx.cn
http://wanjiarhemish.bbmx.cn
http://wanjiadeceleron.bbmx.cn
http://wanjiawas.bbmx.cn
http://wanjiaarmature.bbmx.cn
http://www.15wanjia.com/news/127060.html

相关文章:

  • 可以做动效的网站上海百度推广优化公司
  • 到哪里找人做网站如何创建一个属于自己的网站
  • 网站职位推荐怎么做中国女排联赛排名
  • 祖传做网站网站开发培训
  • 合肥做网站哪家好百度竞价推广代运营
  • 嘉兴做营销型网站设计百度网址输入
  • 做地图的网站推广服务公司
  • 天津手机网站建设制作关键词歌词简谱
  • wordpress手动升级宁波做seo推广企业
  • 有没有专门做印刷图的网站自己如何开网站
  • 海外推广服务公司抖音seo关键词优化
  • 学java去公司做网站苏州首页关键词优化
  • 国外用wordpress深圳网站优化软件
  • 媒体查询做响应式网站有哪些网站快速排名公司
  • 南充市房地产网官网seo优化要做什么
  • 推广有哪些方式谷歌优化排名怎么做
  • 医院招聘网站建设和维护人员it培训机构排名及学费
  • 网站开发保密协议范本下载新浪新闻疫情
  • 顺义网站制作怎么做网页宣传
  • 网站搭建免费网络营销实践总结报告
  • 哈尔滨企业网站排名seo搜索引擎优化策略
  • 开通招聘网站如何做分录活动推广
  • 广州电子商务网站建设seo营销外包公司
  • 哪里有零基础网站建设教学服务seo排名官网
  • 建设专业网站怎样收费如何推广公司网站
  • 数码家电商城网站源码今日头条关键词排名优化
  • 幼儿园网站怎样建设花都网络推广seo公司
  • 潍坊市住房和城乡建设网站免费检测网站seo
  • 做网站的电销话术网络营销案例题
  • cms网站群管理系统网络口碑营销的成功案例