新型的几乎万能的数据结构CDO

CDO的全称为Common Data Object 是公用数据结构的意思,这是抽象的一种新型的数据结构,可以设置基本的数据类型,比如:byte、short、int、long、float、double、String,也可以存储这些类型的数组,同样,CDO里可以嵌套新的CDO或者CDO数组,这种数据结构几乎是万能的数据结构,它可以很方便的转化为XML表示,也可以很方便的转化为Json的表示,同样XML或者Json也可以很方便的转化为CDO对象 ,设想有如下的代码: 
01 CDO cdo1= new CDO();
02 cdo1.setIntegerValue("classid"1);
03 cdo1.setStringValue("classname""一年级一班");
04 cdo1.setStringArrayValue("alias",new String[]{"尖子班级","优秀班级"} );
05 cdo1.setStringArrayValue("students"new String[]{"张三","李四"});
06 CDO scdo1= new CDO();
07 scdo1.setStringValue("username""userone");
08 scdo1.setStringValue("password"".......");
09 scdo1.setIntegerValue("age"18);
10 cdo1.setCDOValue("scdo1", scdo1);

如果将它转化为XML表示如下: 
01 <?xml version="1.0" encoding="UTF-8"?>
02 <CDO>
03     <NF N="classid" V="1"/>
04     <STRF N="classname" V="一年级一班"/>
05     <STRAF N="alias">
06         <STR>尖子班级</STR>
07         <STR>优秀班级</STR>
08     </STRAF>
09     <STRAF N="students">
10         <STR>张三</STR>
11         <STR>李四</STR>
12     </STRAF>
13     <CDOF N="scdo1">
14         <CDO>
15             <STRF N="username" V="userone"/>
16             <STRF N="password" V="..........."/>
17             <NF N="age" V="18"/>
18         </CDO>
19     </CDOF>
20 </CDO>

如果将这个对象转化为Json,将会有如下的表示: 
01 {
02     "classid":1,
03     "classname":"一年级一班",
04     "alias":[
05         "尖子班级",
06         "优秀班级"
07     ],
08     "students":[
09         "张三",
10         "李四"
11     ],
12     "scdo1":{
13         "username":"userone",
14         "password":"...........",
15         "age":18
16     }
17 }

可以看出CDO这个数据结构还是设计的是非常优秀的。

在我们以往的开发中,如果大家稍加思索的话,大家都在写好多好多的bean,每个bean对应一个实体Entity,这样在开发大型的项目的过程中会感觉不合理,通过CDO这个结构,不需要针对每个entity都编写一个java bean类,假若我们有学生和班级两类实体,如果是按照以往的设计,可能会先设计出两个bean class:

01 package com.google.beans;
02  
03 public class Student
04 {
05     private Integer id;
06     private String username;
07     private String address;
08     private boolean sex;
09     private double height;
10     public Integer getId()
11     {
12         return id;
13     }
14     public void setId(Integer id)
15     {
16         this.id = id;
17     }
18     public String getUsername()
19     {
20         return username;
21     }
22     public void setUsername(String username)
23     {
24         this.username = username;
25     }
26     public String getAddress()
27     {
28         return address;
29     }
30     public void setAddress(String address)
31     {
32         this.address = address;
33     }
34     public boolean isSex()
35     {
36         return sex;
37     }
38     public void setSex(boolean sex)
39     {
40         this.sex = sex;
41     }
42     public double getHeight()
43     {
44         return height;
45     }
46     public void setHeight(double height)
47     {
48         this.height = height;
49     }
50 }

01 package com.google.beans;
02  
03 public class Classes
04 {
05     private Integer classId;
06     private String className;
07     private Student[] students;
08     public Integer getClassId()
09     {
10         return classId;
11     }
12     public void setClassId(Integer classId)
13     {
14         this.classId = classId;
15     }
16     public String getClassName()
17     {
18         return className;
19     }
20     public void setClassName(String className)
21     {
22         this.className = className;
23     }
24     public Student[] getStudents()
25     {
26         return students;
27     }
28     public void setStudents(Student[] students)
29     {
30         this.students = students;
31     }
32 }

每个实体bean对应一个Class,如果实体多的话维护起来会很不方便,通过CDO,省去了这些代码: 
01 CDO cdoStudent1 = new CDO();
02 cdoStudent1.setIntegerValue("id"1);
03 cdoStudent1.setStringValue("username""userone");
04 cdoStudent1.setStringValue("address""上海市。。。。。。");
05 cdoStudent1.setBooleanValue("sex"true);
06 cdoStudent1.setDoubleValue("height"1.74);
07  
08 CDO cdoStudent2 = new CDO();
09 cdoStudent2.setIntegerValue("id"2);
10 cdoStudent2.setStringValue("username""usertwo");
11 cdoStudent2.setStringValue("address""深圳市");
12 cdoStudent2.setBooleanValue("sex"false);
13 cdoStudent2.setDoubleValue("height"1.67);
14  
15 CDO cdoClasses = new CDO();
16 cdoClasses.setIntegerValue("classId"1);
17 cdoClasses.setStringValue("className""一年级一班");
18 cdoClasses.setCDOArrayValue("students"new CDO[]{cdoStudent1,cdoStudent2});

它们的XML表示分别为: 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <CDO>
3     <NF N=

你可能感兴趣的:(数据结构)