美文网首页初见
建造者模式——创建型

建造者模式——创建型

作者: 摘星马里奥 | 来源:发表于2020-05-31 10:42 被阅读0次

    定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    用户只需要指定需要建造的类型就可以得到它们,建造过程及细节不需要知道

    类型:创建型

    适用场景:

        如果一个对象有非常复杂的内部结构(很多属性)

        想把复杂对象的创建和使用分离

       

    优点:

        封装性好,创建和使用分离

        扩展性好、建造类之间独立、一定程度上解耦

       

    缺点:

        会产生多余的Builder对象

        产品内部发生变化,建造者都要修改,成本较大

       

    建造者模式与工厂模式:

        注重点不同:

            建造者模式更注重于方法的调用顺序

            工厂模式注重于产品

        创建对象的粒度不同:

            建造者模式可以创建一些复杂的产品,由各种复杂的部件组成

            工厂模式创建出来的都是一个样子

        关注点不同:

            工厂模式只要把对象创建出来即可

            建造者模式不单只要创建出产品,还要知道这个产品都是由那些部件组成的,而且在某些业务场景下,比如说一定的顺序决定了产出的产品不一样的话,那么这里也要对顺序进行调整,工厂则不关心顺序。

           

    coding的UML图V1版:

    V2版(链式调用):

    Course course = new Course.CourseBuilder.buildCourseName("").buildCoursePPT("").build();

    示例:

    JDK中

    例子一:java.lang.StringBuilder的append()方法

            java.lang.StringBuffer的append()方法(不过是加了synchronized同步的关键字)

           

    开源框架中:

    例子二:guava中,Immutable不可变这些数据结构的使用方法

    Set<String> set = ImmuatbleSet.<String>builder().add("a").add("b").build();

    例子三:TokenCache

            guava中的CacheBuilder这个类,典型的建造者模式

    例子四:Spring中的BeanDefinitionBuilder

    例子五:Mybatis中的SqlSessionFactoryBuilder的build方法中,

            XMLConfigBuilder的parse方法,parse方法又调用了parseConfiguration

           

            典型的:建造者包装一层建造者

    相关文章

      网友评论

        本文标题:建造者模式——创建型

        本文链接:https://www.haomeiwen.com/subject/puslzhtx.html