首页 > 其他分享 >用建造者模式的思想改造构造方法。灵活,快捷的链式创建对象

用建造者模式的思想改造构造方法。灵活,快捷的链式创建对象

时间:2024-10-04 11:23:05浏览次数:9  
标签:String 构造方法 people Builder number 创建对象 phone 链式 public

当一个类的构造器需要传入很多参数的时候,他的可读性会变得很差,这个时候用建造者模式的思想进行重构会让代码更加灵活,可读性也更好。

下面演示一下具体步骤:

要创建对象的类是phone类。里面有两个属性number people。
首先私有化构造方法,传入参数是Builder builder ,这个是下面我们要写的内部类。
在这个类里面创建一个内部类Builder
属性和外部类的属性一一对应,并提供赋值且返回值是build的方法,这样我们在链式变成的时候就可以指定任意个数的参数传递了。内部类再提供一个创建外部对象的方法,调用外部类的构造方法即可(具体实现看下面代码就行)

public class phone {

    private String number;

    @Override
    public String toString() {
        return "phone{" +
                "number='" + number + '\'' +
                ", people='" + people + '\'' +
                '}';
    }

    private String people;


    private phone(Builder builder){
        this.number = builder.number;
        this.people = builder.people;
    }

    public static final class Builder{


        private String number;
        private String people;

        public Builder number(String number)
        {
            this.number = number;
            return this;
        }
        public Builder people(String people)
        {
            this.people = people;
            return this;
        }

        // 内部类可以直接访问外部类私有的方法   使用构建者创建phone对象
        public phone build(){
            return new phone(this);

        }


    }
}
class test{

    public static void main(String[] args) {

        // 通过构建者创建phone对象
        phone p1 = new phone.Builder().number("123").people("yuheng").build();

        System.out.println(p1.toString());


    }
}

标签:String,构造方法,people,Builder,number,创建对象,phone,链式,public
From: https://www.cnblogs.com/nicebaoke/p/18446439

相关文章

  • 信息学奥赛复赛复习10-CSP-J2020-03表达式求值-栈、后缀表达式、isdigit函数、c_str函
    PDF文档公众号回复关键字:202410031P7073[CSP-J2020]表达式[题目描述]小C热衷于学习数理逻辑。有一天,他发现了一种特别的逻辑表达式。在这种逻辑表达式中,所有操作数都是变量,且它们的取值只能为0或1,运算从左往右进行。如果表达式中有括号,则先计算括号内的子表达式的......
  • 信息学奥赛复赛复习07-CSP-J2020-03表达式前置知识点-结构体、链表、链式前向星
    PDF文档公众号回复关键字:2024093012020CSP-J题目1优秀的拆分[题目描述]链式前向星模板题,读入n个点,m条边,以及flag,若flag==1则图有向,否则无向。对每个点输出它的每一条边[输入格式]第一行三个数n,m,flag,题意如上所示第2~1+m行,每行三个数,x,y,z,代表从x到y有一条长为z的......
  • 队列的深度解析:链式队列的实现
    引言队列是一种广泛应用于计算机科学的数据结构,具有先进先出(FIFO)的特性。在许多实际应用中,例如任务调度、缓冲区管理等,队列扮演着重要角色。本文将详细介绍队列的基本概念,并通过链表实现一个简单的队列。一、基本概念1.1定义队列是一种线性数据结构,遵循先进先出(FIFO,Firs......
  • 数据结构:实现链式结构二叉树(Tree) 手把手带你入门数据结构~
    文章目录前言一、链式结构二叉树的概念1.定义2.节点结构3.操作4.优势与劣势二、链式结构二叉树的实现1.树结构的定义2.树的遍历(1)前序遍历(2)中序遍历(3)后序遍历3.二叉树结点个数4.二叉树叶子结点个数5.二叉树第k层结点个数6.二叉树的深度/高度7.二叉树查找值为......
  • private私有化,this,构造方法
    关键字private*java提供一个关键字给我们使用:private私有的可以修饰成员变量,成员方法,构造方法在同一个类中,private关键字不起作用,相当于透明的,同一个类中被private关键字修饰的成员可以随意访问标准写法标准写法1.0成员变量:使用private关键字修......
  • java_day6_this关键字、构造方法、static关键字、工具类、文档注释
    一、this关键字this代表的是调用该方法的当前对象【谁调用了该方法,this就代表那个对象】this:代表的是调用当前方法的对象this可以使用对象中的成员变量,成员方法,构造方法变量查找规则:就近原则先在方法中查找变量,若找到就使用若方法中没有该变量,去成......
  • 数据结构-线性表的单链式存储结构图解及C语言实现
    概念链式存储:结点在存储器中的位置是任意的,即逻辑相邻的数据元素在物理上不一定相邻链式存储结构也称非顺序映像或链式映像图解链式存储结构中结点一般有两个部分组成,即数据域(data)和指针域,数据域是用于存放数据的,指针域是用来指向下一结点的地址的,其中头节点指向该链表......
  • java中的构造方法
    //1.使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;//1)设置构造函数实现对属性赋值构造方法的作用:1.可以用来创建对象2.可以用来给对象赋值注意事项:一般来说,如果我们创建了一个有参的构造参数,同时也要创建一个无参的构造参数classDog{......
  • 【数据结构】第八节:链式二叉树
    个人主页: NiKo数据结构专栏: 数据结构与算法 源码获取:Gitee——数据结构一、二叉树的链式结构typedefintBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinaryTreeNode*left;//左子树根节点 structBinaryTreeNode*right;//右子......
  • 线性表的链式存储
    线性表的链式存储1链式存储在一个数据结构中,如果一个结点有多个前驱或后继时,使用顺序存储就比较麻烦,即使是线性结构,如果没有足够大的存储空间供使用,也是无法实现的。这时就可以使用链式下存储,在这种存储方式下,除了存放一个结点的信息外,还需附设指针,用指针来体现结点之间的逻辑......