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

做的好看的旅游网站京东做代码的网站吗

做的好看的旅游网站,京东做代码的网站吗,wordpress 页面查询,东莞手机端网络推广#x1f50d; 目的 使用动态属性#xff0c;并在保持类型安全的同时实现非类型化语言的灵活性。 #x1f50d; 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全#xff0c;并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…  目的 使用动态属性并在保持类型安全的同时实现非类型化语言的灵活性。 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部分组成的计算机。 但是我们不知道特定计算机是否真的拥有所有零件或者仅仅是零件中的一部分。 我们的计算机是动态而且非常灵活的。 通俗的说 抽象文档模式允许在对象不知道的情况下将属性附加到对象。 维基百科 面向对象的结构设计模式用于组织松散类型的键值存储中的对象并使用类型化的视图公开数据。 该模式的目的是在强类型语言中实现组件之间的高度灵活性在这种语言中可以在不丢失类型安全支持的情况下将新属性动态地添加到对象树中。 该模式利用特征将类的不同属性分成不同的接口。 程序示例 让我们首先定义基类Document和AbstractDocument。 它们基本上使对象拥有属性映射和任意数量的子对象。 public interface Document {Void put(String key, Object value);Object get(String key);T StreamT children(String key, FunctionMapString, Object, T constructor); }public abstract class AbstractDocument implements Document {private final MapString, Object properties;protected AbstractDocument(MapString, Object properties) {Objects.requireNonNull(properties, properties map is required);this.properties properties;}Overridepublic Void put(String key, Object value) {properties.put(key, value);return null;}Overridepublic Object get(String key) {return properties.get(key);}Overridepublic T StreamT children(String key, FunctionMapString, Object, T constructor) {return Stream.ofNullable(get(key)).filter(Objects::nonNull).map(el - (ListMapString, Object) el).findAny().stream().flatMap(Collection::stream).map(constructor);}... }接下来我们定义一个枚举“属性”和一组类型价格模型和零件的接口。 这使我们能够为Car类创建静态外观的界面。 public enum Property {PARTS, TYPE, PRICE, MODEL }public interface HasType extends Document {default OptionalString getType() {return Optional.ofNullable((String) get(Property.TYPE.toString()));} }public interface HasPrice extends Document {default OptionalNumber getPrice() {return Optional.ofNullable((Number) get(Property.PRICE.toString()));} } public interface HasModel extends Document {default OptionalString getModel() {return Optional.ofNullable((String) get(Property.MODEL.toString()));} }public interface HasParts extends Document {default StreamPart getParts() {return children(Property.PARTS.toString(), Part::new);} }我们准备介绍Car。 public class Car extends AbstractDocument implements HasModel, HasPrice, HasParts {public Car(MapString, Object properties) {super(properties);} }完整示例中的Car构造和使用方式。 LOGGER.info(Constructing parts and car);var wheelProperties Map.of(Property.TYPE.toString(), wheel,Property.MODEL.toString(), 15C,Property.PRICE.toString(), 100L);var doorProperties Map.of(Property.TYPE.toString(), door,Property.MODEL.toString(), Lambo,Property.PRICE.toString(), 300L);var carProperties Map.of(Property.MODEL.toString(), 300SL,Property.PRICE.toString(), 10000L,Property.PARTS.toString(), List.of(wheelProperties, doorProperties));var car new Car(carProperties);LOGGER.info(Here is our car:);LOGGER.info(- model: {}, car.getModel().orElseThrow());LOGGER.info(- price: {}, car.getPrice().orElseThrow());LOGGER.info(- parts: );car.getParts().forEach(p - LOGGER.info(\t{}/{}/{},p.getType().orElse(null),p.getModel().orElse(null),p.getPrice().orElse(null)));// Constructing parts and car// Here is our car:// model: 300SL// price: 10000// parts: // wheel/15C/100// door/Lambo/300类图 Abstract Document Traits and Domain  适用性 使用抽象文档模式当 需要即时添加新属性你想要一种灵活的方式来以树状结构组织域你想要更宽松的耦合系统
http://www.hkea.cn/news/14371319/

相关文章:

  • 做网页的网站第三方营销策划公司有哪些
  • 做特殊任务的网站山东省乡镇网站建设
  • 品牌网站建设h合肥中山 照明 骏域网站建设
  • 推广网站怎么做能增加咨询郑州网络推广公司排名
  • 赣州做网站的公司有哪家好网页编辑软件有哪些?
  • 上海的网站建设公司wordpress 关掉缓存
  • 企业网站建设维护方案张家界有实力seo优化费用
  • 南京市建筑工程网站做电商网站的公司简介
  • 深圳南山建设局官方网站久久建筑网解析
  • 网站如何做双链路页面设计读书笔记1500
  • 自己怎样做海外网站茂名优化网站建设
  • deals网站建设宁波网站建设地方
  • 河北住房城乡建设厅官方网站天津公司网站
  • 什么网站可以请人做软件下载网站的建设和推广
  • 网站加网页ui设计前景怎样
  • 如何用asp做网站上海自助建站软件
  • 农安县住房城乡建设局网站深圳建设人力资源网
  • 站长统计app进入网址新版个人网站的首页
  • 石家庄做网站电话php做网站 价格
  • 做网站其实不贵asp网站怎么打开
  • 北京建设银行分行招聘网站专业网站建设公司排名
  • 短网址生成站长工具网页设计要学所有软件吗
  • 张家港保税区规划建设局网站怎么找回网站
  • 搭建网站的英语东莞24小时推广首页
  • 做网站用什么平台手机版网站模板 免费
  • 微站直播平台太原网站建设公司排名
  • 淘宝联盟怎么做自已的网站北京昌平网站设计
  • 襄阳住房和城乡建设局网站首页深圳网站建设首选上榜网络
  • drupal 网站建设网站模版购买
  • 云南网站建设公司排行网站开发有哪些常用工具