`

构造器优化需要多个构造器的类(建造者模式)

 
阅读更多
package com.wjy.effective;



public class BuilderConstr {
    private  final int age;
    private  final int num;
    private  final int size;
    
    public int getAge() {
        return age;
    }

    public int getNum() {
        return num;
    }

    public int getSize() {
        return size;
    }

    public static class Builder{
        private final int age;
        private final int num;
        
        private int size=0;
        
        public Builder(int age,int num){
            this.age=age;
            this.num=num;
        }
        
        public Builder size(int size){
            this.size=size;
            return this;
        }
        
        public BuilderConstr build(){
            return new BuilderConstr(this);
        }
    }
    
    public BuilderConstr(Builder builder){
        age=builder.age;
        num=builder.num;
        size=builder.size;
    }
}

 

客户端代码:

package com.wjy.effective;

import com.wjy.effective.BuilderConstr.Builder;

/**
 * @author wjy
 *
 */
public class TestBuildConstr {
    public static void main(String args[]){
        BuilderConstr builderConstr=new BuilderConstr.Builder(23, 1).size(88).build();
        
        //以上代码等价于以下三行代码代码:
//        Builder builder=new BuilderConstr.Builder(23, 1);
//        builder=builder.size(88);
//        BuilderConstr builderConstr=builder.build();
        
        
        
        System.out.println("age: "+builderConstr.getAge());
        System.out.println("num: "+builderConstr.getNum());
        System.out.println("size: "+builderConstr.getSize());
    }
}

 

运行结果:

age: 23
num: 1
size: 88

 

分享到:
评论

相关推荐

    设计模式之建造者模式

    在Java的23种设计模式中,建造者模式是一个非常实用且重要的模式。 建造者模式通常包含四个角色:产品角色(Product)、抽象建造者角色(Builder)、具体建造者角色(Concrete Builder)以及导演角色(Director)。...

    ios 进阶 建造者模式

    2. **多步骤构造**:对于那些需要多个步骤才能创建的对象,建造者模式提供了一个有序的构建过程。每个步骤都可以独立完成,方便添加、删除或修改构建过程。 3. **灵活性**:由于建造者独立于产品,因此可以为同一...

    设计模式之建造者Builder模式

    建造者模式通常用于那些需要大量构造参数的对象,通过一步步构建,避免了在构造过程中出现大量的if-else或者switch语句。 在《设计模式:可复用面向对象软件的基础》一书中,建造者模式被定义为:“建造者模式允许...

    建造者模式1

    建造者模式是一种设计模式,它的主要目标是将一个复杂对象的构建与其表示分离,使得创建过程可以独立于使用过程。这种模式尤其适用于当一个对象的组成部分可能会经常变化,但其构造过程却相对稳定的情况。 在...

    Java创建型设计模式之建造者模式详解.rar

    建造者模式是软件设计模式中的一种,属于创建型模式,它的主要目的是将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。在Java中,建造者模式经常用于构造复杂对象,通过一步一步地创建对象,使得...

    建造者(生成器)模式C++、Java实现

    产品类可能有多个构造版本,每个版本对应于不同的建造者。 2. **建造者接口(Builder)**:定义了创建产品对象各个部分的接口或抽象方法。这是一组用于组装产品的步骤。 3. **具体建造者(Concrete Builder)**:...

    2 建造者模式-MOOC课程内容.pdf

    建造者模式的主要目的是将构造代码与使用构造的对象的代码分离,避免使用构造函数或构造器重载来创建具有多个属性的对象时导致构造函数膨胀的问题。它通过将构造过程分解为不同的步骤,每个步骤对应一个方法,使得...

    设计模式 - 建造模式(C++实例)

    通过这个模式,客户端可以使用相同的建造过程生成不同类型的复杂对象,只需要更换具体建造者即可。同时,产品的构造过程与使用过程解耦,使得构造过程可以更灵活地进行控制。 在C++中实现建造模式时,我们首先定义...

    PHP设计模式之建造者模式定义与用法简单示例

    4. **导演者**(Director):也称为构造器,它使用抽象建造者来构建产品。导演者不关心具体的建造过程,只负责按照特定顺序调用建造者的构建方法。在示例中,`Director`类仅调用了`ConcreteBuilder`的`buildHead()`...

    php设计模式 Builder(建造者模式)

    建造者模式是一种创建型设计模式,它将一个复杂对象的构造过程与其表示分离,使得同样的构建过程可以创建不同的表示。在PHP中,这种模式允许我们通过相同的构建步骤来创建具有不同属性的对象,而无需关心具体的构建...

    java设计模式程序源代码

    例如,你可以找到一个名为`SingletonExample`的类,它可能通过私有构造器和静态工厂方法来实现单例。 2. **工厂模式**:工厂模式提供了一种创建对象的最佳方式,而无需暴露创建逻辑。在压缩包中,可能有一个`...

    生成器模式源代码

    在C#中,生成器模式的实现通常涉及类的隔离和组装,以避免客户端代码直接构造复杂对象,而是通过一个专门的生成器类来完成。 生成器模式的核心思想是分离了抽象部分(产品的接口或抽象类)和具体实现部分(产品的...

    创建者模式Demo

    创建者模式(Creator Pattern)是设计模式中的一种结构型模式,它主要解决的是在软件系统中,当对象的创建过程复杂,需要多个步骤时,如何将这个创建过程封装起来,使得用户只需要通过简单的调用来得到对象,而无需...

    生成器模式builder

    在Java或其他面向对象语言中,生成器模式通常包括四个主要角色:产品(Product)、建造者(Builder)、具体建造者(Concrete Builder)和导演(Director)。产品是最终要构建的对象,建造者定义了产品的部分或全部...

    Java使用建造者模式实现办理手机套餐功能详解

    - 建造者模式可以提供更灵活的构造过程,但过多的建造者类可能导致系统结构复杂化。 通过上述介绍,我们可以看到建造者模式在Java中实现办理手机套餐功能时,是如何通过抽象和模块化的方式,使得套餐配置更加灵活,...

    java创造者模式之车辆组装小demo

    创造者模式,也被称为构造器模式,主要解决的是当创建复杂对象时,其构建过程与表示方式分离的问题。在车辆组装的例子中,汽车可能有多个部件,如引擎、轮胎、车身等,每个部件的装配都有特定的步骤。创造者模式允许...

    研磨设计模式源码

    例如,一个Builder类,一个Director类来指导构建过程,以及多个具体的建造者类。 5. **装饰器模式**:动态地给一个对象添加一些额外的职责。源码中可能有一个抽象Component类,多个ConcreteComponent(具体组件)类...

    23种设计模式

    单例模式的要点在于类的构造器必须是私有的,以防止在类的外部创建该类的其他实例。同时,该类提供一个全局访问点来获取这个唯一的实例。 建造者模式(Builder)属于创建型模式,它提供了一种创建对象的最佳方式。...

    .net多种设计模式的实现

    产品类通常会有一系列复杂的属性和结构,通过建造者模式,我们可以逐步构建产品,提供更灵活的构造过程。例如,我们可以用建造者模式来创建一个复杂的汽车对象,分别设置引擎、轮胎、车身等部分。 以上四种设计模式...

    java设计模式

    30.1 工厂方法模式VS建造者模式 30.1.1 按工厂方法建造超人 30.1.2 按建造者模式建造超人 30.1.3 最佳实践 30.2 抽象工厂模式VS建造者模式 30.2.1 按抽象工厂模式生产车辆 30.2.2 按建造者模式生产车辆 30.2.3 最佳...

Global site tag (gtag.js) - Google Analytics