Configurable API

<span style="font-size:24px;">public interface Configurable
在xml配置文件中的任何的component都必须实现该接口,也就是说在sphinx4中任何的可配置组件(component)都必须实现该方法。一个component的生命周期如下:
1,	Class类型对象解析:Class文件被解析以便确定所有的可配置的属性。这些属性都是这样定义的:“public static final String”属性都被以下annotation(注释)所标记(注释):S4Integer,S4Double,S4Boolean,S4Component,S4ComponentList。只有被annotation所标记(注释的)的属性(property)才可以被配置系统在后使用。
2,	Construction即构造:(空)component的构造方法被调用,以便初始化(组件)component。一般构造方法所做的事情都比较少。
3,	Configuration配置:组件初始化不久,组件的newProperties方法被调用。该方法调用需一个ps参数,ps包含属性(一般来自外部配置文件)。组件从ps中提取properties。如果组件的属性没被annotation完成其属性定义,则会抛出异常。一般一旦一个组件通过newData方法获得了其配置数据,那组件将会初始化它本身。
4,	注意:在大多数情况下,newProperties仅在系统配置的开始(启动)时被调用。当组件在运行时,有可能或必须重新配置组件那么newProperties方法会被调用。组件应该对多次的newProperties调用有合适的反应。
5,	连接其它组件:组件通过必须和系统内的其它组件进行交互。Sphinx4的一个设计目的是在系统中组件很容易的被钩助。因此组件应该使用configuration manager来勾住其它的组件。尽量少用硬编码的形式。
6,	例子:如果一个组件需要和一个Linguist进行交互。我们应该为定义一个配置属性为linguist,而非通过构造方法或者通过setLinguist方法来来显示的设置Linguist。定义的配置属性如下:
     @S4Component(type=Linguist.class)
     public static String PROP_LINGUIST = "linguist";
 使Linguist变的可用,在newProperties方法中,如下:
public void newProperties(PropertySheet propertySheet) {
     linguist = (Linguist) propertySheet.getComponent(PROP_LINGUIST);
   }
getComponent方法将会根据以上的配置数据来找到一个合适的Linguist。
本接口有一个方法:
newProperties(PropertySheet ps):在需重新配置组件时调用。</span>

你可能感兴趣的:(sphinx,语音识别)