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

介绍自己做衣服的网站建设工程信息公开平台

介绍自己做衣服的网站,建设工程信息公开平台,企业推广网站的方法,宝安网站建设-信科网络这是我的演讲“ 21世纪的设计模式”的第三部分。 适配器模式桥接世界。 在一个世界中#xff0c;我们有一个概念的界面。 在另一个世界#xff0c;我们有不同的界面。 这两个接口有不同的用途#xff0c;但有时我们需要进行转移。 在一个编写良好的世界中#xff0c;我们可… 这是我的演讲“ 21世纪的设计模式”的第三部分。 适配器模式桥接世界。 在一个世界中我们有一个概念的界面。 在另一个世界我们有不同的界面。 这两个接口有不同的用途但有时我们需要进行转移。 在一个编写良好的世界中我们可以使用适配器使遵循一种协议的对象遵守另一种协议。 适配器模式有两种。 我们不会谈论这个 interface Fire {T BurntT burn(T thing); }interface Oven {Food cook(Food food); }class WoodFire implements Fire { ... }class MakeshiftOven extends WoodFire implements Oven {Override public Food cook(Food food) {BurntFood noms burn(food);return noms.scrapeOffBurntBits();} } 这种形式 类Adapter模式使我感到惊讶因为extends给了我希比heebiejeebies。 为什么不在本文的讨论范围之内 随时问我我会很乐意谈论你的耳朵可能是你的鼻子。 取而代之的是让我们谈论对象适配器模式 该模式通常被认为在所有方面都更加有用和灵活。 让我们看一下相同的类遵循以下替代方法 class MakeshiftOven implements Oven {private final Fire fire;public MakeshiftOven(Fire fire) {this.fire fire;}Override public Food cook(Food food) {BurntFood noms fire.burn(food);return noms.scrapeOffBurntBits();} } 我们将像这样使用它 Oven oven new MakeshiftOven(fire); Food bakedPie oven.cook(pie); 该模式通常遵循以下简单结构 很好对吗 是。 有点。 我们可以做得更好。 我们已经有一个关于Fire的引用因此构造另一个对象来玩它似乎有点…过大了。 该对象实现了Oven 。 其中有一个抽象方法 。 我在这里看到一种趋势。 相反我们可以创建一个功能相同的函数。 Oven oven food - fire.burn(food).scrapeOffBurntBits(); Food bakedPie oven.cook(pie); 我们可以再进一步编写方法引用但实际上情况更糟。 // Do *not* do this. FunctionFood, BurntFood burn fire::burn; FunctionFood, Food cook burn.andThen(Burnt::scrapeOffBurntBits); Oven oven cook::apply; Food bakedPie oven.cook(pie); 这是因为Java不能在功能接口之间进行隐式转换因此我们需要为它提供有关操作的每个阶段的提示。 另一方面Lambda对于具有正确类型的任何函数接口都是隐式强制的并且编译器在弄清楚如何做到这一点方面做得很好。 我们的新UML图将如下所示 通常我们真正需要的只是方法参考。 例如使用Executor界面。 package java.util.concurrent;/*** An object that executes submitted {link Runnable} tasks.*/ public interface Executor {void execute(Runnable command); } 它消耗了Runnable对象这是一个非常有用的界面。 现在我们将其中一个和一堆Runnable任务保存在Stream 。 Executor executor ...; StreamRunnable tasks ...; 我们如何在执行Executor上执行所有这些Executor 这行不通 tasks.forEach(executor); 事实证明 Stream 上的forEach方法确实需要使用方但是它是一个非常特定的类型 public interface StreamT {...void forEach(Consumer? super T action);... } Consumer看起来像这样 FunctionalInterface public interface ConsumerT {void accept(T t);... } 乍一看这似乎没有什么帮助。 但是请注意 Consumer是一个功能接口因此我们可以使用lambda真正轻松地指定它们。 这意味着我们可以这样做 tasks.forEach(task - executor.execute(task)); 这可以进一步简化 tasks.forEach(executor::execute); Java 8使适配器变得非常简单以至于我犹豫不再将它们称为模式。 这个概念仍然非常重要。 通过显式创建适配器我们可以将这两个世界分开除了在定义的边界点处。 的实现但是 它们只是功能。 翻译自: https://www.javacodegeeks.com/2015/04/design-patterns-in-the-21st-century-the-adapter-pattern.html
http://www.zqtcl.cn/news/996030/

相关文章:

  • 简单网站vs2008不能新建网站
  • 牌具做网站可以吗海外广告投放公司
  • 响应式单页网站模板宁波企业自助建站
  • 网站广告收费标准装饰设计公司起名
  • 网站开发人员构成中国兰州网官网
  • 网站设计的提案旅游网站建设风格
  • 成都网站建设的公司做高大上分析的网站
  • 专业企业网站建设公司成都的网站
  • 广东省建设教育协会官方网站首页怎么设置wordpress头像
  • 图书网站建设论文页游中心
  • 建网站的流程及注意事项任务网站建设
  • 河北邯郸做网站的公司哪家好辽源市住房和城乡建设局网站
  • 网站系统建设技术服务费安康市网站建设
  • 网络运行管理系统seo关键词优化方法
  • 西安学校网站建设价格徐州网页关键词优化
  • 上海哪个网站能应聘做家教的营销网站中最重要的部分是
  • 一个设计网站多少钱WordPress的简约博客主题
  • 普通的宣传网站用什么做济南市工程建设技术监督局网站
  • 合肥网站建设公司还有不dw如何制作表格网页
  • 讯美智能网站建设自己域名做网站
  • 自己做网站优化韩国外贸平台
  • 齐河建设局网站长沙市住房和建设局官方网站
  • 萧山区住房和城乡建设局网站wordpress网站合并
  • 做背景网站网站建设与维护制作网页
  • 网站建设公司知名营销型企业网站项目策划表
  • 写作网站哪个最好企业培训机构有哪些
  • 江苏省水利工程建设局网站域名不备案可以正常使用吗
  • 对网站开发语言的统计网站内容建设包括什么
  • 西安高端网站建设怎样开公司
  • 华为做网站免费签名设计在线生成