php cdi

策略设计模式在运行时动态选择一种实现算法,一种策略。 该模式可用于根据情况选择不同的业务算法。

我们可以将不同的算法实现定义为单独的类。 或者,我们利用Java SE 8 lambda和函数,这些lambda和函数在此处用作轻量级策略实现。

CDI能够注入参数化类型:

public class Greeter {@InjectFunction<String, String> greetingStrategy;public String greet(String name) {return greetingStrategy.apply(name);}
}

CDI生产者根据动态逻辑创建并公开问候语。 实际策略由Function类型表示并动态选择:

public class GreetingStrategyExposer {private final Function<String, String> formalGreeting = name -> "Dear " + name;private final Function<String, String> informalGreeting = name -> "Hey " + name;@Producespublic Function<String, String> exposeStrategy() {// select a strategy...return strategy;}
}

翻译自: https://www.javacodegeeks.com/2018/04/strategy-pattern-with-cdi-and-lambdas.html

php cdi

php cdi_CDI和lambda的策略模式相关推荐

  1. Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式

    猪脚:以下内容参考<Java 8 in Action> 发布:https://ryan-miao.github.io/2017/07/15/java8-in-action-2/ 源码:gi ...

  2. 具有CDI和lambda的策略模式

    策略设计模式在运行时动态选择一种实现算法,一种策略. 该模式可用于根据情况选择不同的业务算法. 我们可以将不同的算法实现定义为单独的类. 或者,我们利用Java SE 8 lambda和函数,它们在此 ...

  3. 换个姿势学设计模式:策略模式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:公众号「闻人的技术博客」 前言 前段时间,接到一个 ...

  4. Java 8中使用Lambda表达式的策略模式

    策略模式是" 设计模式:可重用对象的元素"书中的模式之一 . 本书所述的策略模式的意图是: 定义一系列算法,封装每个算法,并使它们可互换. 策略使算法独立于使用该算法的客户端而变化 ...

  5. 结合JDK源码看设计模式——策略模式

    前言: 现在电商已经成为我们生活中不可或缺的购物渠道,同时各大商家会针对不同的时间做出不同的折扣,这在我们看来就是一种营销手段,也是一种策略,今天我们就来讲讲JDK中的策略模式是怎么样的. 一.定义 ...

  6. 新来的“大神”用策略模式把if else给“优化”了,技术总监说:能不能想好了再改?

    我想大家肯定都或多或少的看过各种"策略模式"的讲解.布道等等,这篇文章就是来好好"澄清"一下策略模式,并尝试回答以下的问题: 策略模式是如何优化业务逻辑代码结构 ...

  7. 设计模式的Java 8 Lambda表达式-策略设计模式

    策略模式定义封装在通常称为Context的驱动程序类中的一系列算法,并使这些算法可互换. 它使算法易于互换,并提供了在特定时间选择适当算法的机制. 算法(策略)在运行时由客户端或上下文选择. 在与客户 ...

  8. 设计模式的Java 8 Lambda表达式–策略设计模式

    策略模式定义封装在通常称为Context的驱动程序类中的一系列算法,并使这些算法可互换. 它使算法易于互换,并提供了在特定时间选择适当算法的机制. 算法(策略)在运行时由客户端或上下文选择. 在与客户 ...

  9. 精讲23种设计模式-策略模式~聚合短信服务和聚合支付服务

    文章目录 一.设计模式 1. 为什么需要使用设计模式 2. 设计模式的分类 3. 什么是策略模式 4. 为什么叫做策略模式 5. 策略模式优缺点 6. 策略模式应用场景 7. Spring框架中使用的 ...

最新文章

  1. HDU2034(set的应用)
  2. Python中的排序sorted(d.items(), key=lambda x: x[1])
  3. Ajax传Form表单,包括上传文件
  4. CSS伪元素 after 实现鼠标悬浮信息及动画效果
  5. 计算机应用基础教程作业脑图 车辆工程学院 冯大昕
  6. myPRO HMI/SCADA 产品被曝多个严重漏洞
  7. Python第十六课(模块3)
  8. 深度学习常用的数据集,包括各种数据跟图像数据
  9. PHP 获取微视无水印源地址_PHP快速实现解析无水印播放地址URL——快手篇
  10. SoapUI接口测试——全流程转载
  11. vmplayer虚拟机中如何找到网络配置的窗口
  12. 【笔记】运筹(上)——Rita_Aloha
  13. 怎么用计算机打出音乐符号,音乐符号怎么打(教你word文档音乐符号怎么打)...
  14. 公共场合的wifi 靠不住
  15. 实测:熊猫烧香考验五大杀毒软件
  16. NX二次开发(Python)-UIStyler-选择体和按钮操作
  17. ISCC 2019 逆向rev02
  18. counters.dat_使用sys.dm_os_performance_counters对SQL Server问题进行故障排除
  19. 测试小故事6:术业有专攻
  20. 减少谷歌搜索使用次数!你知道这3个Python秘密武器吗?

热门文章

  1. AT3860-[AGC020F]Arcs on a Circle【dp】
  2. ARC106E-Medals【hall定理,高维前缀和】
  3. CF878E-Numbers on the blackboard【并查集,贪心】
  4. P3600-随机数生成器【dp,数学期望】
  5. nssl1448-小智过马路【模拟】
  6. P1131-[ZJOI2007]时态同步【树形dp】
  7. P2468-[SDOI2010]粟粟的书架【主席树,二维前缀和】
  8. jzoj1295,P1607-轻轨(庙会班车)【贪心,线段树】
  9. codeforces1453 E. Dog Snacks
  10. 【DP】Rotating Substrings(CF1363F)