什么是数据结构

自关系, 是数据结构;;闭环的DD关系玩玩是数据结构的突破点;

实体间关系是 业务世界的设计重点;


我思考一个问题, 与数据库的批量化交互, 我们获取的是一个 getMaterials() ,现在想利用materials获取到对应的Materials ; 首先获取到对应的ListIds ,可以对每个Materials实现接口, 不同的实体都实现这个接口以实现接口多态;; 然后通过sql批量获取;

2. 如果一个实体是 复合主键怎么办,一开始是想 得到两个 Long-field1_Long-filed2 ,但是如何知道哪个是哪列

 最后想到了 "xx"=properties and "xx"=properties ,形成最终的 String;

但又想, 变成这个String 感觉不太灵活, 突然灵光一现, 可以用一个类(结构体)来表示;

 

Key{

String filedName

Long filedValue

}

 

接口是

getKeys{

List<Key> ;

}

突然领悟: 结构体的作用就是传递信息, 数据+操作;  当你无法完全表达信息时就需要用更复杂的结构体来表征;; 单纯的Long ,String不够用时就需要复合结构体;



2=========
多种层级多种operation 处理查询;; ---树

如果是两层,那么就有level1 的properties =value的操作, level2每个层级间的与或非操作;;

对于level2的数据结构描述是: 每个表达式可以组合,然后变成又一个表达式,无限层次;;这种不就是自引用么;

Node{

data;

operator ;

Node opNode;

}

没有表示出业务含义;;

Node{

Node leftNode

operator

Node rightNode

}

hibernate

LogicalExpression implements Criterion {
    private final Criterion lhs;
    private final Criterion rhs;

    private final String op;

利用DD方法设计数据结构:

实体是 表达式 ,操作符;

关系是 表达式里有自己;表达式里有操作符; 自关系是难点, 是数据结构的重点 ;;闭环的DD关系玩玩是数据结构的突破点

 

这才表示出了node和node的结合又是node, 首先得到了实体,然后得到了实体间关系, DD方法设计数据结构,  自循环

 

如何把这两层统一起来呢???   他们共同的行为就是变成一个sql字符串;

所以很自然想到了toSqlString行为,Criterion接口,,, 这个面相过程就没办法体现出来;;

如果从面向过程的角度,那就是看传入的是Node 还是leaf , 进行两种行为判断;------攀攀的折中方案是把叶子和node的逻辑混合在一起了;  对外只提供一种类,内部通过operator操作符 and or 还是 equal把这两种区分出来;;不是那么完美的设计方案;;

 

很自然想到了数,并且区分叶子和节点;;

本来攀攀想两个叶子和节点变成两个类, 不好体外提供接口;;就需要两个方法;;

其实不然,可以变成一个接口的形式;;把不同的类统一起来;;;; 性质,行为相同就好了;;

是一个和有一个的不同;

 

 

   这个需要心理要了解各种数据结构,以及 过程调用方案( 自己写的处理方案, 递归 ) +  面向对象的 编程技巧方案( hibernate 的 restriction 的接口多态方案 ,这个完全属于编程技巧, 更漂亮的代码 ,无 if else );

public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
    throws HibernateException {
        return '(' +
            lhs.toSqlString(criteria, criteriaQuery) +
            ' ' +
            getOp() +
            ' ' +
            rhs.toSqlString(criteria, criteriaQuery) +
            ')';

    }

面向对象是 对象.xx ;代码优化,并且方便的使用Restrictions等工具类;

面向过程是将对象(数据结构)传进去;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值