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

好的做网站的公司有哪些关于网站开发的自我评价

好的做网站的公司有哪些,关于网站开发的自我评价,保定建站服务,wordpress 分类树🔍 目的 使用动态属性,并在保持类型安全的同时实现非类型化语言的灵活性。 🔍 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全,并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…

 🔍 目的


使用动态属性,并在保持类型安全的同时实现非类型化语言的灵活性。

 🔍 解释


抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全,并将不同类的属性分离为一组接口

真实世界例子

考虑由多个部分组成的计算机。 但是,我们不知道特定计算机是否真的拥有所有零件,或者仅仅是零件中的一部分。 我们的计算机是动态而且非常灵活的。

通俗的说

抽象文档模式允许在对象不知道的情况下将属性附加到对象。

维基百科

面向对象的结构设计模式,用于组织松散类型的键值存储中的对象并使用类型化的视图公开数据。 该模式的目的是在强类型语言中实现组件之间的高度灵活性,在这种语言中,可以在不丢失类型安全支持的情况下,将新属性动态地添加到对象树中。 该模式利用特征将类的不同属性分成不同的接口。

 🔍 程序示例

让我们首先定义基类DocumentAbstractDocument。 它们基本上使对象拥有属性映射和任意数量的子对象。

public interface Document {Void put(String key, Object value);Object get(String key);<T> Stream<T> children(String key, Function<Map<String, Object>, T> constructor);
}public abstract class AbstractDocument implements Document {private final Map<String, Object> properties;protected AbstractDocument(Map<String, 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> Stream<T> children(String key, Function<Map<String, Object>, T> constructor) {return Stream.ofNullable(get(key)).filter(Objects::nonNull).map(el -> (List<Map<String, Object>>) el).findAny().stream().flatMap(Collection::stream).map(constructor);}...
}

 接下来,我们定义一个枚举“属性”和一组类型,价格,模型和零件的接口。 这使我们能够为Car类创建静态外观的界面。

public enum Property {PARTS, TYPE, PRICE, MODEL
}public interface HasType extends Document {default Optional<String> getType() {return Optional.ofNullable((String) get(Property.TYPE.toString()));}
}public interface HasPrice extends Document {default Optional<Number> getPrice() {return Optional.ofNullable((Number) get(Property.PRICE.toString()));}
}
public interface HasModel extends Document {default Optional<String> getModel() {return Optional.ofNullable((String) get(Property.MODEL.toString()));}
}public interface HasParts extends Document {default Stream<Part> getParts() {return children(Property.PARTS.toString(), Part::new);}
}

我们准备介绍Car

public class Car extends AbstractDocument implements HasModel, HasPrice, HasParts {public Car(Map<String, 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.sczhlp.com/news/126573/

相关文章:

  • 合肥高端网站建设工作室app网站开发书籍下载
  • 深圳网站建设公司佰达维修保养网站开发
  • 安徽网站排名关于网站建设的句子
  • 东莞网站制作哪家最便宜wordpress要装在根目录
  • 建筑公司网站建设方案无锡本地做网站
  • 网站改版建设线上网络推广方案
  • 吉林律师网站建设多少钱免费网页制作在线
  • 小型网站建设需要多少钱wpf视频教程 -.net购物网站开发
  • 网站改版设计外发加工网费用大概多少
  • k8s系列--控制器yml(15)
  • 网站怎么icp备案企业网易邮箱登录入口官网
  • 网站外推和优化朋友圈网站文章怎么做的
  • 深圳自适应网站公司网站备案 机构需要什么手续
  • seo文章外包seo优化能提高网站的流量吗
  • 太原网站建设 thinkphp3.2网站流量指标有哪些
  • 空间商网站如何用wordpress做企业
  • 学生管理系统案例初步分析报告
  • 【mysql】mysql5.6 版本修改用户的登录
  • AT_abc200_e [ABC200E] Patisserie ABC 2 题解
  • 日总结 5
  • 网站建设属于哪个税目app官网登录入口
  • 美丽乡村建设网站php源码中企动力做网站5个月了
  • 做美食网站首页怎么做毕设做网站答辩稿
  • 不要钱做网站软件免费搭建博客网站
  • 展示型网站有哪些内容视频转文字网页
  • 广州公司网站设计网站调用优酷视频去除广告
  • 外贸外链网站注册个公司一年需要多少费用
  • 无锡软件开发培训机构seo页面优化公司
  • 吴江建网站优荐苏州聚尚网络河北建设工程新希望
  • 做违法网站判刑吗招商外包公司怎么收费