package ycl.learn.effective.java.builder;
public interface BuilderAPI<T> {
public T build();
/**
* this is the builder Implement to build Object
* 1. we can use diferent thing to builder diference Object.
* 2. we can use something to builder any Type of Object.
*
* @return
*/
public T build(T root);
/**
* we can use the given object to builder Object what you want.
* 1. we can builder object use given object.
* 2. we can use the given object to builder new object,
* but the type is not change
* @param a
* @param b
* @return
*/
public T build(T parent,T sub);
}
package ycl.learn.effective.java.builder;
import java.io.ByteArrayOutputStream;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xerces.jaxp.DocumentBuilderFactoryImpl;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@SuppressWarnings("hiding")
public class TreeBuilder<Element> implements BuilderAPI<Element> {
private Document rootDoc = null;
public Element build() {
// TODO Auto-generated method stub
return null;
}
@SuppressWarnings("unchecked")
public Element build(Node doc,Element root) {
return (Element) doc.appendChild((Node) root);
}
@SuppressWarnings("unchecked")
public Element build(Element parent,Element sub) {
return (Element) ((Node) parent).appendChild((Node) sub);
}
public String getXMLString(Document xmlDoc){
String xmlString = null;
try{
if (xmlDoc != null) {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty("encoding", "UTF-8");//
ByteArrayOutputStream bos = new ByteArrayOutputStream();
t.transform(new DOMSource(xmlDoc), new StreamResult(bos));
xmlString = bos.toString();
bos.close();
}
}catch(Exception e){
e.printStackTrace();
}
return xmlString;
}
public Document document(){
if(rootDoc ==null){
try {
DocumentBuilderFactoryImpl impl = new DocumentBuilderFactoryImpl();
rootDoc= impl.newDocumentBuilder().newDocument();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return rootDoc;
}
public Element build(Element root) {
// TODO Auto-generated method stub
return null;
}
}
package ycl.learn.effective.java.builder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
public class BuilderTest {
/**
* @param args
*/
public static void main(String[] args) {
TreeBuilder<Element> builder = new TreeBuilder<Element>();
Document doc = builder.document();
Element root = doc.createElement("root");
builder.build(doc,root);
Element header = doc.createElement("header");
header.setAttribute("uri", "http://www.baidu.com");
builder.build(root, header);
for(int i=0;i<10;i++){
Element data = doc.createElement("data"+i);
Text text = doc.createTextNode("val"+i);
data.appendChild(text);
builder.build(header, data);
}
String result = builder.getXMLString(doc);
System.out.println(result);
}
}
<?xml version="1.0" encoding="UTF-8"?><root><header uri="http://www.baidu.com"><data0>val0</data0><data1>val1</data1><data2>val2</data2><data3>val3</data3><data4>val4</data4><data5>val5</data5><data6>val6</data6><data7>val7</data7><data8>val8</data8><data9>val9</data9></header></root>
分享到:
相关推荐
ReportBuilder is the defacto standard for Delphi reporting solutions. Delphi developers have ... This screen shot of the ReportBuilder Report Designer shows the ergonomic design of the user-interface.
描述中的"design_builder1 example of mine"进一步确认了这是一个关于Builder模式的实例。 Builder模式通常包含四个主要角色: 1. **产品(Product)**:这是要构建的复杂对象。它通常包含多个组成部分或属性。 2. **...
创建仓库后,你需要登录到 Warehouse Builder Design Center,这是OWB的主要工作界面,用于设计数据仓库模型和ETL流程。 2. **准备数据库实例** 在使用 OWB 之前,确保已有一个支持 OWB 功能的数据库实例,例如 ...
Chapter 1 , Design Patterns, introduces the development environment, and two common design patterns, the factory and abstract factory. ...support library and the builder design pattern.
Quartus II 还提供了多种高级特性,例如 MegaWizard 和 SOPC Builder Design Tools、Incremental Design Flow、LogicLock 优化工具、PowerPlay 功率分析工具等,用户可以使用这些工具对设计进行优化和调整。...
安装完成后,你可以通过Eclipse的“Window”->“Show View”->“Other”菜单找到WindowBuilder的视图,如“Design”和“Source”视图,它们分别用于图形化设计和查看/编辑生成的Java代码。 WindowBuilder Pro支持的...
- 提供额外的组件,如 HTTP Server,用于配置 Oracle Warehouse Builder Design Browser。 2. **Oracle DB 10.1.0.3 Patch** - 包含补丁更新,用于增强数据库性能和安全性。 ##### 无需安装产品说明 1. **Oracle ...
"formbuilder表单构建工具_在线表单设计器代码"是一个专为用户提供的便捷、高效的在线表单设计和构建平台。这个工具允许用户无需编程知识,就能通过简单的拖拽操作创建自定义的表单,适用于各种场景,如数据收集、...
- **Maximize editor on "Design" page activation**:切换到设计视图时,自动最大化 WindowBuilder 编辑器。 - **Go to component definition in source on selection**:在设计视图中选择控件时,在代码视图中高亮...
4. 建造者模式(Builder Design Pattern):建造者模式属于创建型模式,它提供了一种创建复杂对象的方法。该模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式适用于那些...
vue+ant-design+formBuiler表单构建器——技能提升——form design——亲测有效 vue+ant-design+formBuiler表单构建器 ...formBuilder插件的使用 vue:表单构建器 自定义拖拽表单 实现自定义拖拽表单的效果,自定义
通过这些知识点,我们可以理解"design_Builder"可能是一个全面的设计创作和管理平台,旨在帮助用户高效、便捷地完成设计项目并展示他们的作品。如果你对具体的功能或使用方法有更多的疑问,欢迎进一步探索这个工具...
4. **Rtti和Design-Time支持**:C++ Builder中的运行时类型信息(RTTI)和设计时支持允许开发者在运行时检查对象类型,以及在设计阶段自定义组件行为。 5. **数据库连接**:C++ Builder通常用于企业级应用开发,其...
整个手册是针对ALTERA FPGA用户,特别是使用ALTERA Complete Design Suite的用户设计和实现DSP系统时的参考资料。通过学习这个手册,读者能够获得必要的知识和技能来有效地使用DSP Builder,从而在FPGA上实现高效的...
在现代电子系统设计领域,特别是涉及数字信号处理(DSP)模块的设计时,传统的EDA(Electronic Design Automation)技术虽然强大,但在某些方面,尤其是算法密集型设计及模拟信号处理上显得力不从心。为此,Altera公司...
5. **用户接口设计(UI Design)**:PowerBuilder的拖放式界面使得开发者能快速构建用户界面,包括窗口布局、控件放置、菜单设计等。 6. **数据源连接(Datasource Connectivity)**:PowerBuilder支持多种数据库,如...
"visual-builder-design-wireframes"这一资源包,正是为Visual Builder用户量身定制的,旨在提升UI设计的效率和质量。 "Sketch"、"Figma"和"Adobe XD"等标签揭示了这些线框模板支持的流行设计工具。Sketch以其强大...
7. **用户界面设计(UI Design)**:PowerBuilder提供了丰富的控件和布局选项,如窗口、菜单、对话框等。掌握如何设计美观且易用的用户界面,包括控件的布局、颜色、字体等属性调整,是提升用户体验的关键。 8. **...
在描述中提到的jfoenix最新版9.0.8,就是一个流行的JavaFX UI库,它包含了Material Design风格的组件。通过SceneBuilder,开发者可以直接将这些美观且功能丰富的控件拖放到界面上,极大地丰富了UI设计的可能性。 在...