############################# Parameter 实现细节 2008-08-27 17:50:11#########################################
Parameter 参数类型 --- 包裹着参数的类型.
组件上下文的最小单元,用来描述某一对象所依赖的那些对象,这些对象将作为构造函数,setter方法以及method的参数.
参数在上下文中的类型被定义为一下几种.
1.基本类型
java基本类型(仅包含 short,int,long,float,double,boolean)以及引用类型.这里引用类型只的是非上下文中的对象如<component id = "demo" class = "java.lang.String"/>.
2.上下文引用类型
引用上下文中的组件作为参数如<ref>hello</ref>.
3.集合参数
可以包含其他的参数的参数-集合参数;提供了4中集合参数List,Set,Map,Array;这些集合参数的可以包含其他类型(目前仅仅支持<string><ref>).
~~~Paremter的实现方式~~~
1.类之间的关系.
Parameter 参数接口
AbstractParameter 骨架实现
BasicParameter 基本类型参数
CollectionParameter 集合参数的抽象
ListParameter List实现方式
SetParameter Set实现方式
MapParameter Map实现方式
ArrayParameter Array实现方式
SetterParameter 别名参数 使得参数有名字
RefParameter 上下文引用类型参数
CollectionParamterFactory 集合参数工厂<<abstract>>
DefaultCollectonParameterFactory 工厂的默认实现.
2.在那里使用到
SetterParameter
1.是装饰器类装饰了 getByName 方法是参数有名字,没有被装饰的参数将抛出 java.lang.UnsupportedOperationException ; 在 MapParameter 中元素的key.
2.对于setter方法而言就一个参数而且setter方法是根据参数名称命名的,所以就提供一个名称供寻找方法.
3.实现细节
在具体的实现细节之前先要讨论一下类型别提出2个概念.
public class Simple {
public Simple(A a) {
System.out.println("a");
}
public Simple(B a) {
System.out.println("b");
}
public Simple(C a) {
System.out.println("c");
}
public static void main(String[] args) {
new Simple(new D());
}
}
interface A {
// ...
}
interface B extends A {
// ...
}
interface C extends B {
// ...
}
class D implements A, B, C {
// ...
}
上面的代码将会打印出c,我想要表达的意思是程序会自动选择到指定的"血缘"最近的方法.
而Java反射机制没有提供这样的机制必须给定明确的类型来选择方法,由此引出了2个概念---预期类型和实体类型.
1..实体类型 在这里代表的就是D这个对象的类型.
2.预期类型 你想选择A这个构造函数预期类型就要是A,预期类型的作用就是选择方法.
------------------------------Parameter------------------------------------------------------------------------------------------
/**
* 返回参数实体.
*
* @param facilityContainer FacilityContainer 该参数实体有可能依赖容器的其他实体.
*
* @return Object 参数实体.
*/
public Object getParamEntity(FacilityContainer facilityContainer) throws ParameterException;
/**
* 返回预期类型.
* 用来更加精确的选择方法对象时刻使用.
* @return Class<?> 组件的预期类型.
*/
public Class<?> getExpectType(FacilityContainer facilityContainer);
/**
* 返回实体类型.
*
* @return Class<?> 组件的类型.
*/
public Class<?> getEntityType(FacilityContainer facilityContainer);
/**
* 返回参数的别名.
*
* @return String 参数的别名.
*/
public String getByName();
--------------------------------------------------------------------------------------------------------------------------------------
AbstractParameter
实现了 getByName, getEntityType, getExpectType方法.而返回参数实体的方法根据不同的参数类型分别去实现.
BasicParameter
基本类型参数对象,该类型就是将构造函数放进来的参数直接返回.
CollectionParameter
集合参数抽象,该类型使用到了 模板方法模式.
模板方法 getParamEntity 定义方法的执行顺序以及过程,并通过一些钩子 createParamEntity getElementCache getCheckElement 来创建实体获得元素缓存与验证元素类型.
SetterParameter与RefParameter
2个装饰类 前者是给参数提供有名字的功能,后者是根据"引用"来引用上下文中的其他组件作为参数.
分享到:
相关推荐
"H12-411HCIA-Data Center Facility-2019-12" 本文档主要介绍了华为认证数据中心基础设施的知识点,涵盖了数据中心的基础设施、监控系统、制冷系统、UPS、蓄电池、电气系统等多个方面。 监控系统 * 华为监控系统 ...
这个项目,命名为"Facility-H5-use-usbx.rar",利用了STM32的USB设备类通信设备(CDC)功能,使得MCU能够通过USB接口模拟一个串行通信端口,提供与传统串口相似的通讯体验。 STM32是意法半导体(STMicroelectronics...
综上所述,"Facility-H5-use-freertos.rar"中的示例项目展示了如何在STM32 H5平台上结合FreeRTOS进行实时系统开发,通过创建任务、设置优先级、使用中断和同步机制,实现LED控制和LCD显示功能。这为开发者提供了一个...
在工程中,"Facility_H5_use_spi"可能包含了以下关键文件: 1. `stm32h5xx_hal_conf.h` - 这是STM32H5的HAL配置文件,定义了外设的GPIO引脚映射和中断优先级。 2. `main.c` - 主函数,包含系统初始化和SPI配置代码,...
资源分类:Python库 所属语言:Python 资源全名:dafni_cli_dafni_facility-0.0.6-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
1.一张图看懂华为数据中心Facility-AI-PUE节能优化服务(预览版).pdf
Facility_H5_use_uart_dma_idle这个资源使用了stm32H5系列的芯片进行实验,实验内容是用到两个串口,一个串口用于发送,一个串口用于接收。使用DMA+IDLE的方式进行数据接收。
《华为HCIP-Data Center Facility-Operation 数据中心基础设施》培训教材与实验指导手册是一份针对华为认证ICT专家(HCIP)级别的数据中心设施运营管理的专业资料。该资料深入浅出地介绍了现代数据中心的基础架构、...
HCIA-Data Center Facility V2.0 培训教材.zip
【标题】:“Facility-H5.rar”是一个与STM32H5系列微控制器相关的H5工程实例,旨在帮助开发者学习和理解如何在STM32H5芯片上开发应用。 【描述】:该压缩包中的“Facility_H5”项目是基于STM32H5的工程实践,提供...
华为认证HCIA-Data Center Facility V1.0考试主要覆盖了数据中心基础设施相关的多个知识点,包括安全基础知识、数据中心基础设施、配电系统、制冷系统、监控管理系统以及数据中心其他相关系统。以下是对这些知识点的...
《华为HCIP-Data Center Facility-BFDO 数据中心基础设施》培训教材与实验指导手册涵盖了数据中心基础设施建设的关键技术和实践,旨在帮助专业人士深入理解华为的数据中心解决方案,并提升在该领域的专业技能。...
此外,还会涉及电力效率(PUE)指标,以帮助读者理解如何实现绿色节能的数据中心运营。 冷却系统对于保持数据中心设备正常运行至关重要。教材会介绍不同类型的冷却方案,如风冷、水冷、自然冷却等,并讨论如何根据...
设施位置问题 在Go(Golang)中解决了单一分配的设施位置...v, --verbose active verbose mode例子: ./facility-location ./facility-location data/ap10_2.txt -b 90963539.4763 -v -a 4启发式应用GRASP(贪婪随机自
本培训教材针对HCIP-Data Center Facility Deployment V2.0,主要涵盖了数据中心基础设施的多个关键系统。 首先,数据中心场地基础设施是一个多系统的集成体,它包含有八大系统:供电系统、制冷系统、内部装修、...
在提供的压缩包中,`NSGA-II-Cyclic-Facility-Location-master`可能包含以下内容: 1. **MATLAB代码**:实现NSGA-II算法的脚本和函数,可能包括问题定义、参数设置、算法流程、绘图和结果分析等。 2. **数据文件**...
Facility Player 填补了这一空白,它允许开发人员通过 JavaScript API 和 CSS 可以自由调整播放器的外观和行为,实现如控制栏、播放/暂停按钮、进度条等自定义组件。 该播放器的核心特性包括: 1. **无障碍支持**:...
HCIP-Data Center Facility Deployment V2.0 培训教材 HCIP-Data Center Facility Deployment V2.0 实验手册
在TWINS(筑波大学)追加设施数据,登记时间表 欢迎访问https://github.com/Yuiki/twins_with_facility 支持语言:English