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

看车二手车网站源码新乡做网站的公司有那些

看车二手车网站源码,新乡做网站的公司有那些,铁路建设工程网站,网站开发工程师是干什么的使用抽象文档模式的类型安全视图 您如何组织对象#xff1f; 在本文中#xff0c;我将介绍一种模式#xff0c;该模式以无类型的方式在您的系统中组织所谓的名词类#xff0c;然后使用特征公开数据的类型化视图。 这使得只需少量的牺牲就可以在Java之类的语言中获得JavaScr… 使用抽象文档模式的类型安全视图 您如何组织对象 在本文中我将介绍一种模式该模式以无类型的方式在您的系统中组织所谓的名词类然后使用特征公开数据的类型化视图。 这使得只需少量的牺牲就可以在Java之类的语言中获得JavaScript之类的非类型语言的灵活性。 用户在用户界面中所做的每种配置表单中的每种选择都需要存储在可从应用程序访问的某个位置。 它需要以一种可以操作的格式存储。 教科书中的示例是为系统中每个名词定义类并为它们所包含的字段使用getter和setter方法。 做教科书模型的一种更为严肃的方法是为每个名词定义企业bean并使用注释对其进行处理。 它可能看起来像这样 这些静态模型有局限性。 随着系统的发展您将需要添加更多字段更改组件之间的关系并可能出于不同目的创建其他实现。 你知道这个故事。 突然每个名词的静态成分不再那么有趣了。 因此您开始研究其他开发人员。 他们如何解决这个问题 在JavaScript等非类型化语言中您可以使用地图来解决此问题。 有关组件的信息可以存储为键值对。 如果一个子系统需要存储一个附加字段则可以这样做而无需事先定义该字段。 var myCar {model: Tesla, color: Black}; myCar.price 80000; // A new field is defined on-the-fly 它加快了发展速度但同时付出了巨大的代价。 您会失去类型安全性 每个真正的Java开发人员的噩梦。 由于您没有使用组件的结构因此测试和维护也更加困难。 在Speedment进行的最近一次重构中我们面对静态设计与动态设计的这些问题并提出了一个称为Abstract Document Pattern的解决方案。 抽象文件模式 此模型中的文档类似于JavaScript中的Map。 它包含许多未指定值类型的键值对。 在这个未类型化的抽象文档之上是许多Traits 它们表示一个类的特定属性。 特征已使用类型化的方法来检索它们表示的特定值。 名词类只是原始文档接口的抽象基础实现之上的不同特征的并集。 因为一个类可以从多个接口继承所以可以这样做。 实作 让我们看一下这些组件的来源。 Document.java public interface Document {Object put(String key, Object value);Object get(String key);T StreamT children(String key,FunctionMapString, Object, T constructor); } BaseDocument.java public abstract class BaseDocument implements Document {private final MapString, Object entries;protected BaseDocument(MapString, Object entries) {this.entries requireNonNull(entries);}Overridepublic final Object put(String key, Object value) {return entries.put(key, value);}Overridepublic final Object get(String key) {return entries.get(key);}Overridepublic final T StreamT children(String key,FunctionMapString, Object, T constructor) {final ListMapString, Object children (ListMapString, Object) get(key);return children null? Stream.empty(): children.stream().map(constructor);} } HasPrice.java public interface HasPrice extends Document {final String PRICE price;default OptionalInt getPrice() {// Use method get() inherited from Documentfinal Number num (Number) get(PRICE); return num null? OptionalInt.empty(): OptionalInt.of(num.intValue());} } 在这里我们只公开获取价格的吸气剂但是您当然可以用相同的方法实现一个吸气剂。 这些值始终可以通过put方法进行修改但是您面临着将值设置为不同于getter期望的类型的风险。 汽车.java public final class Car extends BaseDocumentimplements HasColor, HasModel, HasPrice {public Car(MapString, Object entries) {super(entries);}} 如您所见最终的名词类很少但是您仍然可以使用类型化的吸气剂访问颜色型号和价格字段。 向组件添加新值就像将其放入地图一样容易但是除非它是接口的一部分否则它不会公开。 该模型还适用于分层组件。 让我们看一下HasWheels特性的外观。 HasWheels.java public interface HasWheels extends Document {final String WHEELS wheels;StreamWheel getWheels() {return children(WHEELS, Wheel::new);} } 就是这么简单 我们利用以下事实在Java 8中您可以将对象的构造函数作为方法引用来引用。 在这种情况下Wheel类的构造函数仅采用一个参数Map StringObject。 这意味着我们可以将其称为Function Map StringObjectWheel。 结论 这种模式既有优点也有缺点。 随着系统的扩展文档结构易于扩展和构建。 不同的子系统可以通过特征接口公开不同的数据。 根据使用哪个构造函数生成视图可以将同一地图视为不同类型。 另一个优势是整个对象层次结构都存在于一个Map中这意味着可以使用现有的库例如Google的gson工具 轻松进行序列化和反序列化。 如果希望数据是不可变的则只需将内部映射包装在构造函数中的unmodifiableMap中即可保护整个层次结构。 一个缺点是它不如常规的bean结构安全。 可以通过多个接口从多个位置修改组件这可能会使代码的可测试性降低。 因此在大规模实施此模式之前应权衡利弊。 如果要查看实际的抽象文档模式示例请查看Speedment项目的源代码其中该项目管理有关用户数据库的所有元数据。 翻译自: https://www.javacodegeeks.com/2016/02/the-best-of-both-worlds.html
http://www.yutouwan.com/news/426988/

相关文章:

  • 彩票系统网站开发贵州省住房建设部网站
  • 常州企业网站建站模板专业营销网站费用
  • 长春网站建设长春网站开发api和微端
  • 有哪些可以做网站的企业郑州网站建设冫汉狮网络
  • 如何通过轻淘客做网站王烨轩
  • 免费建网站的房价必涨的十大城市
  • dedecms做模板网站丹阳网站建设机构
  • 开发电子商务网站和开发新闻类网站什么异同泉州网络推广公司
  • dedecms 广告管理 js 网站变慢婚礼策划方案
  • 金山网站建设公司如何 建设一个网站
  • 做h游戏视频网站有哪些英国做deal的网站
  • 株洲网站制作公司怎样做企业网站备案
  • wordpress网页设计价格设计四川网站推广优化
  • 做网站的总是有活动怎么回事泉州外贸网站开发公司
  • 软件开发工具的基本功能是什么上海网站seo招聘
  • 上海龙象建设集团公司网站松原手机网站开发公司电话
  • 做网站用平板吗单页营销型网站
  • 企业网站设计过程中必须重视的问题之一本地装修网
  • 重庆企业模板建站信息中国菲律宾撤侨
  • 洞头网站建设湖北专业的网瘾学校收费标准
  • 个人购物网站需要备案吗seo外包优化网站 sit
  • 怎么建设手机电影网站拉新注册app拿佣金
  • 舟山市规划建设局网站现代农业建设 乡网站
  • php网站连接数据库教程ppt模板下载免费版百度云
  • 网站的建设哪家好陕西专业网站开发联系电话
  • 旅游网站建设策划书模板网络运营岗位职责
  • 手机建设网站公司上海买二手房做哪个网站好
  • 哈尔滨网站建设q479185700惠做律师推广的网站有哪些
  • 网站开发整体流程图学校网站建设项目可行性分析报告
  • 京东网站建设步骤网站建设费长期待摊费用