介绍配置相关的基础类及其继承关系。
 
参考链接:
 
 
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对应的配置项,直接返回默认值。
 
 

最新文章

  1. js浏览器对象模型(BOM)
  2. 一个ubuntu phper的自我修养(atom)
  3. excel转换日期格式,将yyyymmdd类型日期转换成yyyy-mm-dd等日期类型方法
  4. 《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
  5. 配置suse自动化安装
  6. 使用JAR命令打EAR包
  7. OleVariant的本质
  8. 表A中有两个表示时间的字段A,B;如果B的值大于A的值,则把B的值更新为A的值
  9. C++函数声明和定义深度解析
  10. .html与.htm为网页后缀的区别
  11. C#处理JSON 数据
  12. spring jdbcTemplate 事务,各种诡异,包你醍醐灌顶!
  13. Hdoj 2289.Cup 题解
  14. Python开发【笔记】:获取目录下所有文件
  15. 第五章:creat statechart diagrams for classes and use cases
  16. 20155217 2016-2017-2 《Java程序设计》第5周学习总结
  17. LeetCode【第1题】Two Sum
  18. PHP---文件上传与下载
  19. Java学习--多态
  20. dynamic_caast操作符

热门文章

  1. JavaWebCase
  2. Android广播机制(1)
  3. 解决:idea中右键项目找不到subversion
  4. burpsuite抓包无法识别POST参数问题
  5. JS理论--正则表达式RegExp的创建、元字符、优先度、方法(test(),exec(),match(),replace())
  6. Vue中跨域问题解决方案1
  7. mybatis association的使用
  8. sudo apt-get update 与 sudo apt-get upgrate 的区别
  9. js 正则(部分)
  10. 【Leetcode】164. Maximum Gap 【基数排序】