设计思想 - 第三篇 为什么要用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?

设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?

跟开振学习Spring AOP第三篇:为什么要用AOP

第三篇 函数

设计模式就该这么学:以微信订阅号来讲观察者模式(第三篇)

23种设计模式Java版第三篇