gpt4 book ai didi

简单明了的体会构建者模式

转载 作者:我是一只小鸟 更新时间:2023-03-19 22:31:25 27 4
gpt4 key购买 nike

我们由一个小小的Demo来引出主题,尽管这个Demo有点长~~,我相信还是值得你一看的! 。

木兰诗中有:“雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雌雄?” 。

对象之间的比较想必大家都很熟悉。只须用 util 包中的 Objects.equals() 方法即可。如果我想找出对象之间不相同的属性呢? 那肯定是一个一个属性进行对象啊! 不错,的确是要一个一个的进行对象,然后找出不有差异的属性Key.

                        
                          public class DiffTest {

    public static void main(String[] args) {
        Person wanger1 = new Person("王小二", 12);
        Person wanger2 = new Person("汪小二", 12);

        System.out.println(wanger1.diff(wanger2));
    }



    @Getter
    @Setter
    public static class Person implements Diffable<Person> {
        private String name;
        private Integer age;

        public Person() {}

        public Person(String name, Integer age) {
            this.name = name;
            this.age = age;
        }


        @Override
        public DiffResult<Person> diff(Person that) {
            return new DiffBuilder(this, that, ToStringStyle.NO_CLASS_NAME_STYLE)
                    .append("name", this.name, that.name)
                    .append("age", this.age, that.age)
                    .build();
        }
    }

}

                        
                      
  • 依赖的三方包
                        
                            <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
  </dependency>

                        
                      

上面的Test借助了 Diffable 这个接口来支持可以进行比对,(一般接口申明成 xxxable 代表着这个类支持某个功能,比如 Jsonable , Comparable �...等) 那么 diff(T obj) 方法 借用了 DiffBuilder 这个类来构建出比对后的结果,里面的写法展示了具体构建的过程。最后由 build � 方法返回需要构建出的对象.

最上层的接口非常的简单!(定义接口难道不是越简单越好?) 。

                        
                          public interface Builder<T> {

    /**
     * Returns a reference to the object being constructed or result being
     * calculated by the builder.
     *
     * @return the object constructed or result calculated by the builder.
     */
    T build();
}

                        
                      

所以构建者模式,就是用代码构建一个对象,他演示了一个对象的构建过程,实现方法完全自己实现,我个人非常喜欢这种接口,给你一个白纸随你画,当然给你限定了T(总不定义一个狗但build一个猫出来吧!)。是不是和写作文一样,拟定好一个主题,然后围绕着主题发挥你的文采吧! 。

那么通过本文你可以学习到以下知识点 。

  • 如何找出对象之间的差异(分辨出雌雄兔子)
  • 构建者的上层接口及实际用法之一

最后此篇关于简单明了的体会构建者模式的文章就讲到这里了,如果你想了解更多关于简单明了的体会构建者模式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com