zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    java的继承---包装器与自动装箱
    linux开机启动过程,很多人说的不太清楚的看看。
    黑盒测试/三角形(OC)
    git 忽略一些文件的提交
    volley 框架的使用
    如何通过阿里百川的集成,以及manifest的权限配置完成淘客商品详情页的链接
    抓取网站访问者的QQ号码
    写写东西吧
    Android 强制实现下线功能
    Android 新闻显示界面且适应平板
  • 原文地址:https://www.cnblogs.com/garfieldcgf/p/10291164.html
Copyright © 2011-2022 走看看