zoukankan      html  css  js  c++  java
  • Rocket

     
    介绍配置相关的基础类及其继承关系。
     
    参考链接:
     
     
    1. 类图
     
    配置相关基础类的类图如下:
     
    其中:
    a. 斜体格式的为抽象类;
    b. 三角形箭头表示继承关系;
    c. 菱形箭头表示组成关系;
    d. public/private表示访问限制;
     
    由图中可以看出:
    a. View/Field为抽象类,不能实例化;
    b. Parameter为抽象类,不能实例化;
    c. TerminalView/ChainView为私有类,不能在config包外访问;
    d. ChainParameters/EmptyParameters/PartialParameters/MapParameters为私有类,不能在config包外访问;
    e. Config为公共类,也可以实例化。所以Config类为外部自定义配置主要使用的类。
     
     
    2. 配置主要用于查找
     
    配置是一组预定义的配置,没有动态的增删改,只有查找与使用。
     
    3. Field为待查找对象
     
     
    每一项配置是一个Field,包含三个方面:
    a. Field对象为查找时使用的key;
    b. Field对象中存储一个默认值;
    c. 匹配查找key,返回一个配置值:
    d. 或者查找不到,返回默认值
     
     
    4. View为配置的视图
     
    View为配置组的视图,通过View才能看到配置,进而进行查找使用。
     
    举个例子:
    假设有100条配置,而视图宽度为2条,那么通过视图每次只能看到2条配置。
    若要查找完100条配置,则需要不停的向后移动视图,或者使用50个视图。
     
     
    5. 从视图中查找
     
     
    外部使用的从视图中查找的方法为:final def apply[T](pname: Field[T]): T = apply(pname, this)
    如:
    意为在当前View对象中找key所对应的配置项。site为配置存储的场所和地点:
     
    find为视图内部查找逻辑的实现:
     
    它是一个抽象方法,需要在子类中实现:
     
     
    6. 链式视图:ChainView
     
    ChainView把两个视图组合在一起,先从head视图中查找,而后在tail视图中查找。
     
     
    7. 查找链的终点:TerminalView
     
    TerminalView为查找的终点,说明不存在pname对应的配置项,直接返回默认值。
     
     
  • 相关阅读:
    电视盒子通过adb安装第三方应用
    采用网闸隔离的内外网如何进行数据的即时交互?
    数据结构-python-二叉树
    Python+uiautomator2写安卓手机脚本前期准备
    centos6.5离线rpm安装mysql
    centos7 nginx 启动脚本
    zabbix简单改造为免密登陆
    vue生命周期函数
    mysql 深入问题了解
    9. 回文数.py
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10322097.html
Copyright © 2011-2022 走看看