@Builder建造者模式

建造者模式:

1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
3、如何使用:用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
4、解决的问题
(1)、方便用户创建复杂的对象(不需要知道实现过程)
(2)、代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用)
5、注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序,一般用来创建更为复杂的对象

Lombok使用:

在创建一个类时,会使用写使用get/set方法
1.jpg
当我们使用了lombok之后,可以简化代码:
2.png
要注意的是,使用lombok是默认覆盖原来默认全部有参构造方法的,为解决这个问题,可以使用:@AllArgsConstructor注解,
image.png
使用**@Builder注解会覆盖无参构造方法,所以可以使用@NoArgsConstructor注解来实现默认无参构造方法。
这时候你就会发现,如果使用建造者模式给实体的每个字段进行赋值,会报错不兼容,这是因为
@Builder注解与@NoArgsConstructor**注解冲突了,
所以,现在的全家福是
image.png
以上,我们就可以使用建造者模式了

        List<User> userList = new ArrayList<>();

        User user1 = User.builder().id(1).name("ONE").sex("1").build();
        User user2 = User.builder().id(2).name("ZERO").sex("0").build();
        User user3 = User.builder().id(3).name("TWO").sex("0").build();
        User user4 = User.builder().id(4).name("FOUR").sex("1").build();
        User user5 = User.builder().id(5).name("ONE").sex("1").build();

        //使用lombok没有无参构造方法,只有具有全部参数的构造方法
        User user = new User("1",1,"1");


        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
        System.out.println("筛选前:" + userList);
        userList = userList.stream().filter(o -> o.getName().equals("ONE")).collect(Collectors.toList());
        System.out.println("筛选后:" + userList);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值