Spring中有很多地方用到了模板方法模式,本文主要介紹AbstractBeanDefinitionParser中用到的模板方法模式。
具體的模板方法模式的詳細介紹可以參見:https://www.cnblogs.com/zhanglei93/p/6021086.html
AbstractBeanDefinitionParser 中的public final BeanDefinition parse(Element element, ParserContext parserContext) 方法概括了解析bean的算法框架,而該方法調用的parseInternal(element, parserContext)方法則由子類實現,是典型的模板方法模式。AbstractSingleBeanDefinitionParser作為AbstractBeanDefinitionParser 的子類實現了parseInternal方法。AbstractSingleBeanDefinitionParser是抽象類, 該類也使用了模板方法模式。該類中parseInternal方法調用了該類中定義的doParse方法,而doParse方法是一個空方法, 其中並未做任何操作。繼承AbstractSingleBeanDefinitionParser的子類可以重寫doParse方法。比如要想實現一個自定義的標簽,可以繼承AbstractSingleBeanDefinitionParser類,重寫doParse方法,在重寫的doParse方法中實現自定義標簽的解析。