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

宁波正规网站建设方式湖州市住房和城乡建设局官方网站

宁波正规网站建设方式,湖州市住房和城乡建设局官方网站,动漫网站源码下载,石家庄市城乡建设局网站策略模式定义封装在通常称为Context的驱动程序类中的一系列算法#xff0c;并使这些算法可互换。 它使算法易于互换#xff0c;并提供了在特定时间选择适当算法的机制。 算法#xff08;策略#xff09;在运行时由客户端或上下文选择。 在与客户端交互期间#xff0c;Con… 策略模式定义封装在通常称为Context的驱动程序类中的一系列算法并使这些算法可互换。 它使算法易于互换并提供了在特定时间选择适当算法的机制。 算法策略在运行时由客户端或上下文选择。 在与客户端交互期间Context类处理所有数据。 战略模式的主要参与者如下 策略–指定所有算法的接口。 该接口用于调用由ConcreteStrategy定义的算法。 上下文–维护对策略对象的引用。 ConcreteStrategy –根据策略接口的算法的实际实现 现在让我们看一下策略模式的具体示例并看一下如何使用lambda表达式对其进行转换。 假设我们有不同类型的税率来计算所得税。 根据是提前还是延迟缴税分别有回扣或罚款。 我们可以将此功能与不同方法封装在同一类中但是如果将来需要进行其他一些税收计算则需要对该类进行修改。 这不是一种有效的方法。 更改类的实现应该是最后的选择。 让我们通过使用策略模式来采取最佳方法。 我们将使用基本方法为“税收策略”建立界面 public interface TaxStrategy {public double calculateTax(double income); } 现在让我们定义正常所得税的具体策略。 public class PersonalTaxStrategy implements TaxStrategy {public PersonalTaxStrategy() { }Overridepublic double calculateTax(double income) {System.out.println(PersonalTax);double tax income * 0.3;return tax;} } PersonalTaxStrategy类符合TaxStrategy接口。 同样让我们​​为延迟付款定义一种具体的策略该策略会产生罚款。 public class PersonalTaxPenaltyStrategy implements TaxStrategy {public PersonalTaxPenaltyStrategy() { }Overridepublic double calculateTax(double income) {System.out.println(PersonalTaxWithPenalty);double tax income * 0.4;return tax;} } 接下来让我们定义一种预付款的具体策略以实现退税。 public class PersonalTaxRebateStrategy implements TaxStrategy {public PersonalTaxRebateStrategy() { }Overridepublic double calculateTax(double income) {System.out.println(PersonalTaxWithRebate);double tax income * 0.2;return tax;} } 现在让我们结合定义的所有类和接口以利用策略模式的强大功能。 让main方法充当不同策略的上下文。 仅查看所有这些类的一个示例相互作用 import java.util.Arrays; import java.util.List;public class TaxStrategyMain {public static void main(String [] args) {//Create a List of Tax strategies for different scenariosListTaxStrategy taxStrategyList Arrays.asList(new PersonalTaxStrategy(),new PersonalTaxPenaltyStrategy(),new PersonalTaxRebateStrategy());//Calculate Tax for different scenarios with corresponding strategiesfor (TaxStrategy taxStrategy : taxStrategyList) {System.out.println(taxStrategy.calculateTax(30000.0));}} } 运行此命令可获得以下输出 PersonalTax9000.0PersonalTaxWithPenalty12000.0PersonalTaxWithRebate6000.0 它清楚地说明了如何通过使用适当的具体策略类别来计算不同的税率。 我试图将所有具体策略算法组合在一个列表中然后通过遍历该列表来访问它们。 到目前为止我们所看到的仅仅是标准策略模式而且已经存在了很长时间。 在这些时候函数式编程是新的流行语可以在Java中对lambda表达式的支持下思考事情可以做得不同吗 实际上由于策略接口就像一个功能接口因此我们可以使用Java中的lambda表达式进行哈希处理。 让我们看看代码的样子 import java.util.Arrays; import java.util.List;public class TaxStrategyMainWithLambda {public static void main(String [] args) {//Create a List of Tax strategies for different scenarios with inline logic using LambdaListTaxStrategy taxStrategyList Arrays.asList((income) - { System.out.println(PersonalTax); return 0.30 * income; },(income) - { System.out.println(PersonalTaxWithPenalty); return 0.40 * income; },(income) - { System.out.println(PersonalTaxWithRebate); return 0.20 * income; });//Calculate Tax for different scenarios with corresponding strategiestaxStrategyList.forEach((strategy) - System.out.println(strategy.calculateTax(30000.0)));} } 运行此命令可获得类似的输出 PersonalTax9000.0PersonalTaxWithPenalty12000.0PersonalTaxWithRebate6000.0 我们可以看到使用lambda表达式会使具体策略的其他类变得多余。 您不需要其他课程 只需使用lambda表达式指定其他行为。 可以从我的github存储库访问所有代码片段 翻译自: https://www.javacodegeeks.com/2016/01/java-8-lambda-expression-design-patterns-strategy-design-pattern.html
http://www.sadfv.cn/news/143397/

相关文章:

  • 建设项目环境影响登记网站湖北wordpress图片浏览器
  • 自己做视频网站上传视频成都百度小程序开发
  • 怎样做自己的 优惠卷网站宣传网站建设方案
  • 网站开发 自我评价wordpress样式切换功能
  • 丰台网站建设推广seo南京建设集团网站
  • 句容本地网站网站建设 专项资金变更
  • 网络推广最好的网站有哪些wordpress add_role
  • 桂林 门户网站省级住房城乡建设主管部门网站
  • 中建八局土木建设有限公司网站微商怎么做_和淘宝网站一样吗?
  • 东莞网站建设是什么意思国家企业信用信息查询全国
  • 网站制作完成后为了高端网站建设与制作
  • 做网站投诉要钱吗免费信息推广平台
  • 微信公众号开发流程关键词排名手机优化软件
  • 成都专业网站推广公司淘宝联盟网站备案
  • 设计素材网站哪个好官方商城
  • 临沂网站建设哪家专业网站搭建 保定
  • 杭州集团公司网站建设网站推广软件排名
  • 网站程序的构成济南开发网站
  • 横峰县建设局网站企业推广网
  • seo方案成都企业网站seo
  • 网站建设推荐网在哪里可以学做饰品网站
  • 孝感网站的建设wordpress 调用qq头像
  • 自己建站网站推广手段
  • 建设银行网网站做行程的网站 哪个最好
  • 江门市建设银行网站如何看网站是html几代做的
  • 网站建设网站规划书网站域名如何注册
  • 在淘宝上做网站如何付费婚纱摄影网站的设计与实现论文
  • 烟台高新区规划国土建设局网站企业起名字
  • 专业设计自学网站电子商务网站开发教程论文6
  • 洛阳微信平台网站建设个人网站可以做经营性的吗