java模式:建造者模式

  我发现很多源码很喜欢用这个模式,比如spring cloud,spring framework。

  建造者模式(Builder)用以构建各种各样的对象,主要功能就是代替对象的构造函数,更加自由化。

  举个栗子,先假设有一个问题,我们需要创建一个学生对象,属性有name,number,class,sex,age,school等属性,如果每一个属性都可以为空,也就是说我们可以只用一个name,也可以用一个school,name,或者一个class,number,或者其他任意的赋值来创建一个学生对象,这时该怎么构造?

  难道我们写6个1个输入的构造函数,15个2个输入的构造函数.......吗?这个时候就需要用到Builder模式了。

  例子借用:https://www.cnblogs.com/malihe/p/6891920.html

public class Builder {

    static class Student{
        String name = null ;
        int number = -1 ;
        String sex = null ;
        int age = -1 ;
        String school = null ;

     //构建器,利用构建器作为参数来构建Student对象
        static class StudentBuilder{
            String name = null ;
            int number = -1 ;
            String sex = null ;
            int age = -1 ;
            String school = null ;
            public StudentBuilder setName(String name) {
                this.name = name;
                return  this ;
            }

            public StudentBuilder setNumber(int number) {
                this.number = number;
                return  this ;
            }

            public StudentBuilder setSex(String sex) {
                this.sex = sex;
                return  this ;
            }

            public StudentBuilder setAge(int age) {
                this.age = age;
                return  this ;
            }

            public StudentBuilder setSchool(String school) {
                this.school = school;
                return  this ;
            }
            public Student build() {
                return new Student(this);
            }
        }

        public Student(StudentBuilder builder){
            this.age = builder.age;
            this.name = builder.name;
            this.number = builder.number;
            this.school = builder.school ;
            this.sex = builder.sex ;
        }
    }

    public static void main( String[] args ){
        Student a = new Student.StudentBuilder().setAge(13).setName("LiHua").build();
        Student b = new Student.StudentBuilder().setSchool("sc").setSex("Male").setName("ZhangSan").build();
    }
}

原文地址:https://www.cnblogs.com/garfieldcgf/p/10291164.html

时间: 2024-10-10 17:59:40

java模式:建造者模式的相关文章

创建型模式 建造者模式

创建型模式 建造者模式 1) Builder:为创建产品各个部分,统一抽象接口. 2) ConcreteBuilder:具体的创建产品的各个部分,部分A, 部分B,部分C. 3) Director:构造一个使用Builder接口的对象. 4) Product:表示被构造的复杂对象.         ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口.        适用情况:一个对象的构建比较复杂,将一个对象的构建和对象

Java设计模式-建造者模式(Builder)

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品.即建造模式可以强制实行一种分步骤进行的建造过程. 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心. 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建

Java设计模式——建造者模式

建造者模式(Builder Pattern)属于创建形的设计模式,使用多个简单的对象一步一步构建成一个复杂的对象. 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定. 何时使用:一些基本部件不会变,而其组合经常变化的时候. 应用实例: 1.去肯德基,汉堡.可乐.薯条.炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的&quo

Java之建造者模式(Builder Pattern)(转)

1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品.即建造模式可以强制实行一种分步骤进行的建造过程. 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心. 举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部

Java设计模式--------建造者模式(Builder模式)

Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用建造者模式 是为了将构建复杂对象的过程和它的部件解耦.注意:是解耦过程和部件. 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮.方向盘.发动机,还

Java设计模式-建造者模式

建造者模式概述 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可.它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性. 建造者模式结构 ● Builder(抽象建造者):它为创建一个产品 Product 对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一

创建模式 -- 建造者模式

一.小案例分析 1.功能需求: 现需要建房子,建房流程:挖地基.砌墙.封顶.对于不同种类的房子(高楼,别墅),流程虽然一样,但是具体功能实现不同.如何实现建房子? 2.小菜鸡的答案: (1)定义一个抽象接口,并定义三个抽象方法(挖地基.砌墙.封顶).(2)对于不同种类的房子,实现该接口,并重写相关方法即可.(3)代码实现: package builder.pattern; /** * 测试类 * */ public class BuilderDemo { public static void m

第6章 创建型模式—建造者模式

1. 建造者(Builder,或生成器)模式的定义 (1)将一个复杂对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ①上述提到的“构建”是指构造过程的算法(即构造顺序,位于director类中),“表示”指生成各部件的具体细节(或叫实现,位于Builder或其子类中). ②由指导者(director)来指导构造过程,而建造者(builder)负责每步的对象的具体实现和组装各部件. ③指导者可以重用构建过程,而生成器是可以被切换的具体实现. (2)建造者模式的结构和说明 ①Buil

生成器模式(建造者模式)

生成器模式(或者叫建造者模式) 将一个复杂类的 表示 与其 构建过程 相分离,使得相同的构建过程.能够得出不同的表示. 如果我们使用建造者模式,那么用户只需要指定类型就好了,过程在调用的时候就不需要想了.因为我们已经定义好了. 其中Builder定义一个构建过程. 而ConcretBuilder是按照这一过程实现的不同表示. Director是整个模式的指挥者.客户端在调用的时候,要告诉Director具体使用哪个ConcreBuilder.其实也就是传递一个Builder对象.

(五)(创建型模式)建造者模式

一.建造者模式(Builder Pattern): 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一种对象创建型模式. 二.应用场景: 建立一个复杂产品,根据产品的类型决定实例化产品的结果,不需要考虑产品的构想过程. 三.应用实例: 动物界的掌控者Tom,觉得出门走入太慢了,想建造一些车代步,但是目前还没有想好什么类型的车,建立一个车辆建造中心,能根据Tom大哥的车型要求,制造出指定的车型.(要求:具体的车型易扩展) 四.方案: UML图: 代码: pac