`

org.springframework.core.styler包解读

阅读更多
    这个包的说明是:Support for styling values as Strings, with ToStringCreator as central class.
这个包简单来说就是提供一个pretty-printing功能的辅助类,而ToStringCreator就是用于产生一个可以输出经过美化的value信息的toString()方法。使用方法参照spring的Test可以看到是这样:   
<!---->        int[] integers = new int[] { 01234 };
        String str 
= new ToStringCreator(integers).toString();
        assertEquals(
"[@" + ObjectUtils.getIdentityHexString(integers) + " array<integer>[0, 1, 2, 3, 4]]</integer>", str);
或者写个简单例子感受下:
<!---->int [] a={1,2,3,4,5,6,7,8,9};
System.out.println(
new ToStringCreator(a).toString());
    
输出:
<!---->[@18558d2 array<Integer>[123456789]]

    如果你接触过ruby,你应该很熟悉Object.inpsect这个功能,这里通过ToStringCreator包装的toString()方法也是产生类似的能够清晰显示对象内部结构信息的方法。spring应该是使用这些辅助类来报告清晰的错误信息或者提示信息。
    看看这个包的UML类图:

    首先,你需要理解ToStringStyler和ValueStyle两个接口,ToStringStyler定义了描述一个输入的Value信息的基本模板方法:
<!---->public interface ToStringStyler {

    
/**
     * Style a toString()'ed object before its fields are styled.
     * 
@param buffer the buffer to print to
     * 
@param obj the object to style
     
*/
    
void styleStart(StringBuffer buffer, Object obj);

    
/**
     * Style a toString()'ed object after it's fields are styled.
     * 
@param buffer the buffer to print to
     * 
@param obj the object to style
     
*/
    
void styleEnd(StringBuffer buffer, Object obj);

    
/**
     * Style a field value as a string.
     * 
@param buffer the buffer to print to
     * 
@param fieldName the he name of the field
     * 
@param value the field value
     
*/
    
void styleField(StringBuffer buffer, String fieldName, Object value);

    
/**
     * Style the given value.
     * 
@param buffer the buffer to print to
     * 
@param value the field value
     
*/
    
void styleValue(StringBuffer buffer, Object value);

    
/**
     * Style the field separator.
     * 
@param buffer buffer to print to
     
*/
    
void styleFieldSeparator(StringBuffer buffer);

}
    这是典型的Template Method模式,而两个接口ToStringStyler、ValueStyler和它们的相应实现DefaultToStringStyler、DefaultValueStyler又是策略模式(Strategy)的应用体现。ValueStyler和DefaultValueStyler之间不仅仅是策略模式,同时也是visitor模式,请看DefaultValueStyler中一系列重载的visit方法,这些visit方法访问不同类型Value的内部结构并构造pretty格式的String返回,提供给ToStringStyler使用。
    ToStringCreator是ToStringStyler的客户,它使用ToStringStyler调用产生优美格式打印,而ToStringStyler 其实又是使用ValueStyler是访问每个不同类型的子元素并返回优美格式的String。实现的相当精巧和灵活:
   
<!---->public ToStringCreator(Object obj, ToStringStyler styler) {
        Assert.notNull(obj, 
"The object to be styled is required");
        
this.object = obj;
        
this.styler = (styler != null ? styler : DEFAULT_TO_STRING_STYLER);
//开始        this.styler.styleStart(this.buffer, this.object);
    }

public ToStringCreator append(String fieldName, byte value) {
        
return append(fieldName, new Byte(value));
    }
   一系列不同类型的append方法
   
public String toString() {
//结束,并返回优美格式的String        this.styler.styleEnd(this.buffer, this.object);
        return this.buffer.toString();
    }
分享到:
评论

相关推荐

    PyPI 官网下载 | styler_rest_framework-1.4.2.tar.gz

    《PyPI官网下载:styler_rest_framework-1.4.2.tar.gz——深入解析Python库的构建与发布》 PyPI(Python Package Index)是Python社区的重要资源库,它为全球Python开发者提供了一个集中分享和下载Python软件包的...

    Laravel开发-styler

    "styler"这个包的主要功能是实时编译Less(一种CSS预处理器)文件,使得开发者可以在开发过程中快速看到样式变化,提升开发效率。Less提供了一些高级特性,如变量、嵌套规则、运算符等,让CSS编写变得更加简洁和灵活...

    PyPI 官网下载 | styler_rest_framework-1.8.1.tar.gz

    标题中的"PyPI 官网下载 | styler_rest_framework-1.8.1.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`styler_rest_framework`,版本为1.8.1,且以tar.gz格式压缩。PyPI是Python开发者...

    Python库 | styler_rest_framework-1.1.0-py2.py3-none-any.whl

    `styler_rest_framework-1.1.0-py2.py3-none-any.whl`文件是一个Python的轮子(wheel)包,它是Python的二进制分发格式,适用于Python 2和3版本。安装这个库可以直接使用`pip`命令,例如: ```bash pip install ...

    PyPI 官网下载 | styler_rest_framework-1.3.0-py2.py3-none-any.whl

    标题中的"PyPI 官网下载 | styler_rest_framework-1.3.0-py2.py3-none-any.whl"表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为`styler_rest_framework`,版本为1.3.0。PyPI是Python社区最常用...

    styler-1.7.34.zip

    《Geoserver Styler:样式选择器插件详解》 在地理信息系统(GIS)领域,Geoserver是一款广泛应用的开源服务器软件,它能够发布、管理并提供地理空间数据。为了使地图展示更具吸引力和交互性,Styler是Geoserver中...

    PyPI 官网下载 | styler_rest_framework-1.1.0-py2.py3-none-any.whl

    资源来自pypi官网。 资源全名:styler_rest_framework-1.1.0-py2.py3-none-any.whl

    dc_html_styler

    使用以下方法扩展pandas.io.formats.style.Styler类: dc_table dc_headers dc_peak dc_sign dc_row_divider dc_col_divider dc_heatmap dc_even_uneven dc_add_title dc_make_col_int dc_render

    styler 靓丽皮肤资源收集

    "styler"是一个工具,它允许用户自定义他们的操作系统界面,尤其是Windows XP系统,使其看起来更接近Windows 7的风格。这款工具提供了丰富的皮肤资源,让老旧的操作系统也能享受到现代设计的美感。 "xp系统完美仿...

    UGOPENAPI二次开发之UIStyler开发[整理].pdf

    ### UGOPENAPI二次开发之UIStyler开发详解 #### 一、环境搭建与配置 在进行UGOPENAPI的二次开发之前,首先需要完成环境的搭建与配置工作。这一步骤至关重要,它直接影响到后续开发流程的顺利进行。 1. **创建目录...

    UG插件开发说明(UIStyler)

    ### UG插件开发说明(UIStyler) #### 概述 UG插件开发是一项高级功能,允许用户根据特定需求定制化用户界面与功能。本文档主要介绍如何使用UIStyler工具来开发适用于Unigraphics (UG) 的插件,特别是针对菜单栏和...

    UGOPENAPI二次开发之UIStyler开发.pdf

    ### UGOPENAPI二次开发之UIStyler开发详解 #### 一、环境搭建与配置 在进行UGOPENAPI的二次开发之前,首先需要完成环境的搭建与配置工作。这里介绍的是通过创建特定目录和配置环境变量的方式来进行的。 1. **...

    matlab中云滴代码-math-time-series:时间序列的数学

    matlab中云滴代码时间序列的数学 这个库的目标是包含一堆主要用于金融的常见时间序列分析工具和指标。 内容一览 构建说明 您可以使用 Maven 或 Gradle ...org.knowm.xchart.style.Styler import or

    Python库 | styler_identity-0.5.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:styler_identity-0.5.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    styler1.4.0.1安装版

    styler安装版,里面集成了部分漂亮的工具栏·~希望大家喜欢~!1!

    Source Styler C++ 1.30

    **源码格式化工具——Source Styler C++ 1.30** Source Styler C++ 1.30是一款高效且易用的代码格式化工具,专为C++程序员设计,旨在提供一种快速、便捷的方式来整理和美化他们的源代码。这款软件的核心功能是将...

    桌面天下系统美化包v10.exe

    2、美化包包含:系统主题(vs)、IP图标包、壁纸、styler工具栏样式、登陆界面、鼠标指针、系统字体、阴影工具。 3、美化包内采用DIY式安装,让你在玩美化的时候还能系统的学习美化知识,不像那些一键安装傻瓜美化包...

    Styler 英文版、中文版

    Styler是一款专注于系统界面美化,特别是针对Internet Explorer浏览器和Windows资源管理器进行Vista风格改造的工具。这款软件能够将用户的操作环境变得更加现代和美观,带给用户全新的视觉体验。 在Windows操作系统...

    3D-calcite-maps-styler-template.zip

    3D-calcite-maps-styler-template.zip,用于创建、设置样式和共享现代二维和三维地图应用程序的Arcgis可配置应用程序。使用arcgis为javascript api v4、方解石地图和引导程序构建。,3D建模使用专门的软件来创建物理...

Global site tag (gtag.js) - Google Analytics