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

网站举报在哪举报服务范围 网站建设公司

网站举报在哪举报,服务范围 网站建设公司,哪个网站做兼职有保障,兰州网络推广电话关于此主题的文章很多#xff08;绝大多数#xff09;#xff0c;但我只是想贡献我的两分钱#xff0c;写一篇简短的文章#xff0c;介绍如何使用Java中的Fluent Object Creation模式或对象构建器实例化Value Objects。 值对象是由其状态#xff08;值#xff09;而不是… 关于此主题的文章很多绝大多数但我只是想贡献我的两分钱写一篇简短的文章介绍如何使用Java中的Fluent Object Creation模式或对象构建器实例化Value Objects。 值对象是由其状态值而不是其在内存中的地址定义的抽象。 价值对象的示例是诸如金钱数字坐标等之类的东西。它们不是用来描述业务对象而是用于描述具体不可分割的实体。 此外它们是将其添加到收藏和地图的绝佳选择。 在Java中 Value Objects应该声明为final并且不提供setter方法基本上使它在创建后保持不变这是非常重要的 需求。 最终声明它们会使它们无法充当父对象。 这是通过设计完成的因为价值对象应该对小的具体实体进行建模。 原因是我们应该能够创建和比较这些对象的多个副本这总是由状态而不是通过引用来完成。 另外您应该声明适当的equals和hashCode方法以符合适当的值对象的条件。 在C 中适用相同的原理。 在C 中您应该使用Copy构造函数并重载赋值和比较运算符。 流利的对象创建模式使价值对象实例化优雅而干净。 很快就会看到使用流畅的对象创建可以带来很多好处。 从API用户的角度来看应用此模式的最终结果将如下所示 Money fiveEuros new Money.Builder().currency(Currency.EURO).value(5.0L).countryOfOrigin(Spain).type(Coin).reverse(Map of Europe).obverse(Map of Spain).addColor(Bronze).addColor(Silver).year(1880) .build(); 我认为您会同意这种模式与之相反流程更加顺畅 Money fiveEuros new Money(); fiveEuros.setCurrency(Currency.EURO); fiveEuros.setValue(5.0L); fiveEuros.countryOfOrigin(Spain); fiveEuros.type(Coin); fiveEuros.reverse(Map of Europe); fiveEuros.obverse(Map of Spain);ListString colors new ArrayListString(); for(String color: new String[] {Bronze, Silver}) {colors.add(color); }fiveEuros.setColors(colors); fiveEuros.setYear(1880); 这似乎坏了并且有很多打字和重复。 在我看来这是一个构建非常大的价值对象的示例其中大多数往往很小。 在讨论以这种方式创建对象的好处之前让我们看一下这种模式的结构 public final class Money {private Long value;private String countryOfOrigin; private Currency currency;private String type; private String reverse;private String obverse; private ListString colors;private Date year; private Money() { }// -- getters, hashCode, equals -- //// Static inner Builder classpublic static class Builder {private Money _temp new Money(); public Builder value(Long val) { _temp.value val; return this; } public Builder countryOfOrigin(String countryOfOrigin) { _temp.contryOfOrigin countryOfOrigin;return this; } public Builder currency(Currency c) { _temp.currency c; return this; } public Builder type(String t) { _temp.type t; return this; } public Builder reverse(String r) { _temp.reverse r; return this; }public Builder obverse(String o) { _temp.obverse o; return this; }public Builder addColor(String c) { if(_temp.colors null) {_temp.colors new ArrayListString(); }_temp.colors.add(c); return this; }public Builder year(String y) {if(y null || y.isEmpty()) {_temp.year new Date();}else {_temp.year DateFormat.parse(y);} return this; } public Money build() {// Validate objectif(Strings.isNullOrEmpty(_temp.name) || _temp.currency null) {throw new IllegalArgumentException(Coin currency and value required);} return _temp; }} } 这也是一个问题但是我更喜欢静态内部类方法。 我喜欢将构建者称为“规范性” Money.Builder。 还需要将其设为静态 因为构建器实例需要独立于封闭类生活。 我喜欢这种模式因为它具有以下优点 更大的对象封装通过将Money构造函数设为私有这只是样式我可以轻松地使用构建器强制执行对象构造。 这完全隐藏了创建该对象的所有复杂性列表创建日期解析等。从用户的角度来看最终得到的是一个易于实例化的对象。 我的插图很简单但是可以想象更复杂的对象图。 代码可读性使用此模式创建对象使单元测试和代码非常易于阅读和遵循。 长期减少键入即使您必须为每个添加的属性添加额外的构建器方法但长期保存的键入量还是值得的。 结论 使用流畅的创建模式需要更多的工作但是最终获得回报的好处。 它使实例化对象非常优雅和干净。 您不必将其与Value Objects一起使用使用Fluent Object Creation的大多数好处是当您需要构建相当复杂的对象图时但是我想证明它也可以适用 小价值的对象。 参考我们的JCG合作伙伴 Luis Atencio在Reflective Thought博客上的Fluent Object Creation 。 翻译自: https://www.javacodegeeks.com/2013/01/fluent-object-creation.html
http://www.yutouwan.com/news/15106/

相关文章:

  • 如何制作个人手机网站怎么注册公司名
  • 移动电商网站建设网站都有什么功能
  • 郑州定制网站建设制作类似网站软件
  • 卫生网站建设方案wordpress id 连续
  • 广西平台网站建设报价优惠做网站
  • 西湖专业网站设计公司私人做网站收费
  • 保定信息平台网站建设上海著名的网站制作公司
  • 外军网站建设广东住房和城乡建设厅官网
  • 专业做网站关键词排名下掉wordpress禁止适应屏幕
  • 网站大气模板如何做网站广告图片
  • 国外视觉差网站天津项目网站建设
  • 医疗网站建设怎么样自己做视频网站收益怎么来
  • 网站开发及维护费用西安网络整合营销
  • 网站怎么做网站地图哪里有手机网站制作公司
  • 怎样利用云盘做电影网站凡客诚品盈利模式
  • 做兼职在什么网站找比较好帮人做网站一定要先收费
  • 手机版网站设计页面设计简单吗
  • 个人网站做淘宝客违规深圳网站设计收费标准
  • 青岛即墨网站建设设计用dw怎么做网站后台
  • 多语言企业网站免费网站软件正能量
  • 广州一起做网店属于什么网站住建培训平台
  • 腾讯云快速建站北京网站建设价格天
  • 浙江网站优化公司广告设计图片大全 创意
  • 重庆如何软件网站推广网站模板编辑软件
  • apache 配置网站地址网站建设外包需要注意哪些
  • 网站开发费用构成安康升降平台
  • 泰安网站建设招聘wordpress 个人资料页
  • 北京网站制作收费标准快速网站优化服务
  • 专业做网站哪里好wordpress app弊端
  • 东莞整站优化凡科网站开发