设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?
Posted 是摩卡不是抹茶呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?相关的知识,希望对你有一定的参考价值。
设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?
文章目录
使用案例
LambdaQueryWrapper<Demo> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(Demo::getName, name);
Wrappers
public final class Wrappers
private Wrappers()
// ignore
/**
* 获取 LambdaQueryWrapper<T>
*
* @param <T> 实体类泛型
* @return LambdaQueryWrapper<T>
*/
public static <T> LambdaQueryWrapper<T> lambdaQuery()
return new LambdaQueryWrapper<>();
// 省略一些其他方法定义
核心原理
使用:静态工厂方法模式
说明:屏蔽了创建对象的细节,比如,创建对象之前他需要做一个初始化动作,你的每个new对象都要改,如果调用方法就不用你改动,方法的实现改动一下就可以了。
注意其中的构造方法被声明为了 private,这样可以防止它被外部调用,于是调用方在使用实例的时候,基本上就必须通过 lambdaQuery、lambdaQuery、emptyWrapper 这几个静态工厂方法来创建。
对外暴露的属性越多,调用者就越容易出错。
所以对于类的提供者,一般来说,应该努力减少对外暴露属性,从而降低调用者出错的机会。
能够扩大类的提供者对自己所提供的类的控制力。
缺点
缺类的所有重载的构造方法的名字都相同,不能从名字上区分每个重载方法,容易引起混淆。
静态工厂方法的方法名可以是任意的,这一特性的优点是可以提高程序代码的可读性
以上是关于设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?的主要内容,如果未能解决你的问题,请参考以下文章
设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?