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

网站建设需要学多久知乎有创意的设计产品

网站建设需要学多久知乎,有创意的设计产品,搬瓦工做网站稳定吗,开网店做代理的公司网站Java8实战-总结33 重构、测试和调试使用 Lambda 重构面向对象的设计模式策略模式模板方法 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 新的语言特性常常让现存的编程模式或设计黯然失色。比如#xff0c; Java 5中引入了for-each循环#xff0c;由于它的稳健性和… Java8实战-总结33 重构、测试和调试使用 Lambda 重构面向对象的设计模式策略模式模板方法 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 新的语言特性常常让现存的编程模式或设计黯然失色。比如 Java 5中引入了for-each循环由于它的稳健性和简洁性已经替代了很多显式使用迭代器的情形。Java 7中推出的菱形操作符让大家在创建实例时无需显式使用泛型一定程度上推动了Java程序员们采用类型接口type interface进行程序设计。 对设计经验的归纳总结被称为设计模式。设计软件时可以复用这些方式方法来解决一些常见问题。这看起来像传统建筑工程师的工作方式对典型的场景比如悬挂桥、拱桥等都定义有可重用的解决方案。例如访问者模式常用于分离程序的算法和它的操作对象。单例模式一般用于限制类的实例化仅生成一份对象。 Lambda表达式为程序员的工具箱又新添了一件利器。它们为解决传统设计模式所面对的问题提供了新的解决方案不但如此采用这些方案往往更高效、更简单。使用Lambda表达式后很多现存的略显臃肿的面向对象设计模式能够用更精简的方式实现了。下面会针对五个设计模式展开讨论分别是 策略模式模板方法观察者模式责任链模式工厂模式 策略模式 策略模式代表了解决一类算法的通用解决方案可以在运行时选择使用哪种方案。例如使用不同的条件比如苹果的重量或者颜色来筛选库存中的苹果。可以将这一模式应用到更广泛的领域比如使用不同的标准来验证输入的有效性使用不同的方式来分析或者格式化输入。 策略模式包含三部分内容 一个代表某个算法的接口它是策略模式的接口。一个或多个该接口的具体实现它们代表了算法的多种实现比如实体类ConcreteStrategyA或者ConcreteStrategyB。一个或多个使用策略对象的客户。 假设希望验证输入的内容是否根据标准进行了恰当的格式化比如只包含小写字母或数字。可以从定义一个验证文本以String的形式表示的接口入手 public interface ValidationStrategy { boolean execute(String s); } 其次定义了该接口的一个或多个具体实现 public class IsAllLowerCase implements ValidationStrategy { public boolean execute(String s) { return s.matches([a-z]); } } public class IsNumeric implements ValidationStrategy { public boolean execute(String s) { return s.matches(\\d); } } 之后就可以在程序中使用这些略有差异的验证策略了 public class Validator { private final ValidationStrategy strategy; public Validator(ValidationStrategy v) { this.strategy v;} public boolean validate(String s) { return strategy.execute(s); } } Validator numericValidator new Validator(new IsNumeric()); boolean b1 numericValidator.validate(aaaa); //返回false Validator lowerCaseValidator new Validator(new IsAllLowerCase()); boolean b2 lowerCaseValidator.validate(bbbb); //返回true使用Lambda表达式 ValidationStrategy是一个函数接口除此之外它还与PredicateString具有同样的函数描述。这意味着不需要声明新的类来实现不同的策略通过直接传递Lambda表达式就能达到同样的目的并且还更简洁 Validator numericValidator new Validator((String s) - s.matches([a-z])); boolean b1 numericValidator.validate(aaaa); //直接传递Lambda表达式 Validator lowerCaseValidator new Validator((String s) - s.matches(\\d)); //直接传递Lambda表达式 boolean b2 lowerCaseValidator.validate(bbbb); Lambda表达式避免了采用策略设计模式时僵化的模板代码。如果仔细分析一下个中缘由会发现Lambda表达式实际已经对部分代码或策略进行了封装而这就是创建策略设计模式的初衷。因此建议对类似的问题应该尽量使用Lambda表达式来解决。 模板方法 如果需要采用某个算法的框架同时又希望有一定的灵活度能对它的某些部分进行改进那么采用模板方法设计模式是比较通用的方案。换句话说模板方法模式在你“希望使用这个算法但是需要对其中的某些行进行改进才能达到希望的效果”时是非常有用的。 从一个例子着手看看这个模式是如何工作的。假设需要编写一个简单的在线银行应用。通常用户需要输入一个用户账户之后应用才能从银行的数据库中得到用户的详细信息最终完成一些让用户满意的操作。不同分行的在线银行应用让客户满意的方式可能还略有不同比如给客户的账户发放红利或者仅仅是少发送一些推广文件。可能通过下面的抽象类方式来实现在线银行应用 abstract class OnlineBanking { public void processCustomer(int id){ Customer c Database.getCustomerWithId(id); makeCustomerHappy(c); }abstract void makeCustomerHappy(Customer c); } processCustomer方法搭建了在线银行算法的框架获取客户提供的ID然后提供服务让用户满意。不同的支行可以通过继承OnlineBanking类对该方法提供差异化的实现。 使用Lambda表达式 使用Lambda表达式同样也可以解决这些问题创建算法框架让具体的实现插入某些部分。你想要插入的不同算法组件可以通过Lambda表达式或者方法引用的方式实现。 这里向processCustomer方法引入了第二个参数它是一个ConsumerCustomer类型的参数与前文定义的makeCustomerHappy的特征保持一致 public void processCustomer(int id, ConsumerCustomer makeCustomerHappy) { Customer c Database.getCustomerWithId(id); makeCustomerHappy.accept(c); } 现在可以很方便地通过传递Lambda表达式直接插入不同的行为不再需要继承OnlineBanking类了 new OnlineBankingLambda().processCustomer(1337, (Customer c) - System.out.println(Hello c.getName());
http://www.hkea.cn/news/14270675/

相关文章:

  • php做的网站网站运营案例
  • 电商网站开发平台用什么人开发pc端软件下载
  • 杨浦区建设小学网站首页建设银行代发工资网站
  • 外贸网站建设模板windows 2003 取消网站访问密码
  • 做自媒体一般都注册几个网站上市公司网站的作用
  • 建站中心网站开发安全性
  • 山东做网站的织梦 别人 网站 模板
  • 网站开发所需硬件wordpress站内301
  • 保洁公司做网站有什么作用专做外贸库存的网站
  • 我做的网站平台百度搜不到网站优化的方式有哪些
  • 网站什么时候恢复彩色邢台做网站企业
  • 厦门seo公司网站家具制作网站
  • php网站开发实例教程案例建设银行民营企业
  • 网站空间商拿不回数据seo关键词优化怎么做
  • 门户网站意思搭建网站教程视频
  • 西安建设手机网站唐山网站建设找汉狮
  • 深南花园裙楼 网站建设上海网站建设shzanen
  • 网站开发应注意什么百度seo工具
  • 浙江王氏生态建设网站企点营销软件
  • 徐水网站建设制作微信公众号的网站
  • 网站设计步骤详解厦门大型网站设计公司
  • 网上下载的网页模板怎么用淄博优化网站
  • 制作网站什么制作软件云匠网订单多吗
  • 零基础jsp网站开发wordpress 主题 地图
  • wordpress免插件cdn加速seo销售话术开场白
  • 能做SEO优化的网站建设怎么做网站官方电话
  • 石家庄网站建设seo网站好玩代码和特效
  • 佳木斯网站建设哪家好中国建设银行春季招聘网站
  • 青岛网站建设的流程有哪些建站公司转型做什么业务
  • 如何打百度人工电话常州网站关键字优化