博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探Java Builder模式--组装复杂的实力
阅读量:7228 次
发布时间:2019-06-29

本文共 3383 字,大约阅读时间需要 11 分钟。

  hot3.png

这是ztree抽象类,方便扩展。

public abstract class AbstractZtree
{ /** * 默认初始化顶级id */ public static final String TOP = "0001"; //本级Id protected String id; //父级菜单的 id protected String pId; //中文名称 protected String name; //点击地址 protected String url; //是否展开 protected boolean open; //是否为父节点 protected boolean isParent; protected List
children = new ArrayList
(); public AbstractZtree() { } public AbstractZtree(String id, String pId, String name, boolean open, boolean isParent) { super(); this.id = id; this.pId = pId; this.name = name; this.open = open; this.isParent = isParent; } ... 大量get set 方法

继承类主要是测试Builder 只是测试Builder 所以就不做无限递归了

public class ZtreeDemoVo extends AbstractZtree
{ public static final String TREE_NAME = "测试"; public ZtreeDemoVo() { } private ZtreeDemoVo(Builder builder){ super(builder.id, builder.pId, builder.name, builder.open, builder.isParent); } /** * 传入上级编码 跟下级数据bean 生产二级节点。 * @param pid */ public void initChildren(String pid , List
beans){ List
ls = new ArrayList
(); ZtreeDemoVo data = null; for (Bean bean : beans) { data = new ZtreeDemoVo .Builder() .id(bean.getId()) .pId(pid) .name(bean.getName()) .open(false) .isParent(false) .build(); ls.add(data); } this.children = ls; } public static class Builder { //本级Id private String id = getTop(); //父级菜单的 id private String pId = null; //中文名称 private String name = TREE_NAME; //是否展开 private boolean open = true; //是否为父节点 private boolean isParent = true; public Builder id(String id){ this.id = id; return this; } public Builder pId(String pId){ this.pId = pId; return this; } public Builder name(String name){ this.name = name; return this; } public Builder open(Boolean open){ this.open = open; return this; } public Builder isParent(Boolean isParent){ this.isParent = isParent; return this; } public ZtreeDemoVo build(){ return new ZtreeDemoVo(this); } }}

测试bean

public class Bean {		private String id;		private String pid;		private String name;	public String getId() {		return id;	}	public Bean() {		// TODO Auto-generated constructor stub	}		public Bean(String id, String pid, String name) {		super();		this.id = id;		this.pid = pid;		this.name = name;	}      ... 大量get set 方法

测试类 这里的Json.toJson()就是bean 转json跟Gson什么的差不多的功能。

public class ZtreeTest {			@Test	public void ztree(){		List
beans = new ArrayList
(); Bean data = null; for (int i = 0; i < 3; i++) { //模拟假数据 data = new Bean(String.valueOf(i), String.valueOf(i), String.valueOf(i)); beans.add(data); } ZtreeDemoVo vo = new ZtreeDemoVo.Builder().build(); vo.initChildren(vo.getId(),beans); //初始化二级数据 System.out.println(Json.toJson(vo)); }}

结果

{   "id": "0001",   "name": "测试",   "open": true,   "isParent": true,   "children": [{      "id": "0",      "pId": "0001",      "name": "0",      "open": false,      "isParent": false,      "children": []   }, {      "id": "1",      "pId": "0001",      "name": "1",      "open": false,      "isParent": false,      "children": []   }, {      "id": "2",      "pId": "0001",      "name": "2",      "open": false,      "isParent": false,      "children": []   }]}

转载于:https://my.oschina.net/z201/blog/834324

你可能感兴趣的文章
单服务器MySQL主从复制实践
查看>>
CentOS 7 root口令恢复
查看>>
| 刘知远:让计算机听懂人话
查看>>
苹果收购初创公司Tueo Health,哮喘监测或将应用到Apple Watch
查看>>
CLR存储过程
查看>>
初级运维(一)
查看>>
C语言字符串常用函数学习(一)
查看>>
Lync Server 2010部署与应用(三)---拓扑生成与发布
查看>>
安全摘记1:关于安全与黑客
查看>>
我的友情链接
查看>>
tbox中vector容器的使用
查看>>
一个简单的PHP笔试题
查看>>
firebug重新载入页面获取源码
查看>>
我的友情链接
查看>>
5月末周中国.COM总量净增1.2万个 美国净减2.6万个
查看>>
Elasticsearch数据建模-关联查询
查看>>
我的友情链接
查看>>
CentOS 下安装 Lnmp
查看>>
redis系列:通过日志案例学习string命令
查看>>
世界冠军之路:菜鸟车辆路径规划求解引擎研发历程
查看>>