面向对象和面向过程的区别--- 如何利用面向对象特性美化代码, 分层 ;

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

   

另外一种方案是: 直接变成树, 攀攀的Node查询法,多层级,多operation ;


public class OperationNode {
private OperatorEnum operator;

// 当operator为AND/OR时,需要设置leftChild和rightChild值
private OperationNode leftChild;
private OperationNode rightChild;

// 当operator为EQUAL/NOT_EQUAL时,需要设置protertyName和value值
private String propertyName;
private String value;

}

对 node 树处理时 根据 operation区分 是 节点 还是叶子 


或者利用面向对象的特性, 把树的递归变成自然的方法调用;;

 

LogicalExpression 和 simpleExpression ;

面向对象+接口多态 实现方法调用的递归, 实现不同类的递归, 但是相同接口的递归;;

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

    }

 

攀少的处理( 把 node 节点和leaf 都用一个类表示 , 处理的时候用operation把两者区分开来,,这种写法不太美观, 原因之一是 节点和leaf是两种不同的业务含义, 一种是直接 属性+Node , 一种是 表达式 operation 表达式 , 现在只有两种操作还简单,当变成 in like = notEqual ,between( hibernate中是 LikeExpression ,InExpression )等等操作时, 简单的使用 if else就会把代码复杂化,这时候就可以想到利用多态, 而且是接口多态



很好的面向对象编程技巧方案,自动化处理的基本方案,思路; 


 这是我以前没有想得到的 

if(operation= xxx){

}if (operation= xxx){

 ) ;

重构if case的方法就是增加类,实现多态; 现在应该是实现接口实现多态;;



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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值