前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@Builder建造者模式

@Builder建造者模式

作者头像
关忆北.
发布2021-12-07 16:25:37
6260
发布2021-12-07 16:25:37
举报
文章被收录于专栏:关忆北.关忆北.
建造者模式:

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

Lombok使用:

在创建一个类时,会使用写使用get/set方法

1.jpg
1.jpg

当我们使用了lombok之后,可以简化代码:

2.png
2.png

要注意的是,使用lombok是默认覆盖原来默认全部有参构造方法的,为解决这个问题,可以使用:@AllArgsConstructor注解,

image.png
image.png

使用**@Builder注解会覆盖无参构造方法,所以可以使用@NoArgsConstructor注解来实现默认无参构造方法。 这时候你就会发现,如果使用建造者模式给实体的每个字段进行赋值,会报错不兼容,这是因为@Builder注解与@NoArgsConstructor**注解冲突了, 所以,现在的全家福是

image.png
image.png

以上,我们就可以使用建造者模式了

代码语言:javascript
复制
        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);
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 建造者模式:
  • Lombok使用:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档