`
隐形的翅膀
  • 浏览: 496954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java构建器模式

 
阅读更多


当创建对象需要传入多个参数的时候我们通常会根据参数的数量写不同的构造器,具体如下

public A(int a){}

public A(int a, int b){}

public A(int a, int b, int c){}

根据不同的参数调用不同的构造器,但是当参数多了的时候,这种方式不够灵活,所以会实现动态传参的方法

public A(){}

public void seta(int a){}

public void setb(int b){}

public void setc(int c){}

这种方式提高了传参的可读性,也提高了传参的灵活性,但是会增加代码行数,同时在多线程异步执行的时候导致奇怪的错误。


有没有办法解决呢?既能提高代码可读性,提高参数灵活性,又不会增加代码行数,并保证线程安全呢?

重叠构造器模式
A(a)
A(a,0)
A(a,b,0)
缺点,许多参数不是我们想要灵活设置的,只能给出默认值

构建器模式登场,先看代码:

public class A {

    private int a;

    private int b;

    private int c;


    public static class Builder {

        private int a;

        private int b;

        private int c;

        public Builder(){}

        public Builder seta(int a) { this.a = a; return this}

        public Builder setb(int b) { this.b = b; return this}

        public Builder setc(int c) { this.c = c; return this}

        public A build() { return new A(this)}

    }


    private A(Builder builder) {

        this.a = builder.a;

        this.b = builder.b;

        this.c = builder.c;

    }

}


调用构造方法:

A a = new A.Builder().seta(1).setb(2).setc(3).build();


这样就解决了以上所说的问题,但是他的缺点同样也是存在的,就是:

1.构造器写起来很复杂

2.创建对象开销比较大

所以构建器模式只适用于需要传入很多种情况参数的时候,比如大于4种参数的配合,才比较划算。

而且值得注意的是:最好在类的设计之初就考虑是否使用构建器,否则日后扩展起来新构建器旧构造器一起用维护起来不方便。
分享到:
评论

相关推荐

    java生成器模式

    生成器模式(Builder Pattern)是Java设计模式中的创建型模式之一,主要解决复杂对象的构建问题,通过将构造过程逐步分解,使得构造过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常用于创建...

    设计模式之解释器模式Java版本实现

    在Java中实现解释器模式,我们可以创建一个抽象表达式接口,然后为每种特定的语法结构创建一个具体表达式类。这个模式在处理简单的语言或表达式时特别有用,例如配置文件、简单的计算器或者SQL查询的简化版本。 ...

    详解java构建者模式Builder

    详解 Java 构建者模式 Builder Java 构建者模式 Builder 是一种创建型模式,用于一步步创建一个复杂对象。该模式将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离。这种模式非常适合在构建复杂...

    重学java的设计模式

    4. 建造者模式:将复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示,适用于构建步骤复杂且独立的对象。 5. 原型模式:通过复制已有对象来创建新对象,减少创建新对象的成本。 接下来是结构型模式...

    Java企业设计模式

    在Java中,例如构建数据库连接字符串或者构建复杂的UI组件时,建造者模式非常适用。 5. 适配器模式:适配器模式允许不兼容的接口之间进行通信。在Java中,当需要使用一个已经存在的类,但它提供的接口与我们的需求...

    java设计模式pdf

    通过投资跟踪器的例子,演示了如何通过构建器来组装对象的不同部分。 - **原型模式**(第45页):用于创建对象的副本,而不是通过new关键字来创建新对象。通过克隆机制实现了原型模式,并探讨了其在Java中的实现细节...

    设计模式之构建模式Java实现和类设计图

    构建模式(Builder Pattern)是设计模式中的一种结构型模式,主要解决复杂对象的创建问题,通过将构造过程逐步分解,使得构造过程与表示分离,从而能够独立地改变它们。这种模式在Java中广泛应用,尤其在需要创建...

    【Java 设计模式-源码】组合器模式:构建灵活的代码组合

    组合器模式是一种在 Java 中广泛使用的函数式编程技术,对于组合函数以构建复杂行为至关重要。该模式允许开发者将多个较小的函数或操作组合成一个更复杂的操作,促进灵活和可重用的代码。通过利用高阶函数,组合器...

    设计模式Java版

    在Java编程语言中,设计模式的应用尤为广泛,因为它们可以帮助开发者构建可扩展、可维护且易于理解的代码。在这个“设计模式Java版”资料中,我们将会探讨一系列基于Java的设计模式。 首先,我们要了解设计模式的三...

    java_构造者模式

    在Java中,构造者模式通过隔离实例化过程和对象的构建过程,使得创建对象的过程更加灵活,同时也提高了代码的可读性和可维护性。下面我们将深入探讨这个模式的概念、结构以及如何在Java中实现。 1. **模式概念** ...

    Java的23种设计模式百度云下载链接.rar

    Java的IO流体系结构就是装饰器模式的经典应用。 8. **适配器模式**:将一个类的接口转换成客户希望的另一个接口。Java中的`Adapter`类用于不同接口之间的转换。 9. **桥接模式**:将抽象部分与它的实现部分分离,...

    Java企业设计模式.rar

    在Java中,例如构建复杂的SQL查询或者配置复杂的对象结构,建造者模式能提供良好的解决方案。 5. **策略模式**:策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换。在Java EE中,策略模式常...

    java 建造者模式代码

    在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时。以下是关于Java建造者模式的详细解析。 1. **模式定义**: 建造者模式(Builder Pattern)是创建型...

    Java常用编程模式代码

    4. **装饰器模式**:装饰器模式动态地给一个对象添加一些额外的职责,可以单独扩展功能而不影响其他对象。例如,给InputStream添加读取文件、网络流等能力。 5. **代理模式**:代理模式为其他对象提供一种代理以...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    - java.lang.StringBuilder#append(),字符串构建器。 - javax.swing.GroupLayout.Group#addComponent(),添加组件到分组。 c) 工厂方法模式(FactoryMethod) 工厂方法模式定义了一个创建对象的接口,但由子类...

    Java常用设计模式

    5. **建造者模式**:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式使得创建过程更加灵活,可以方便地增加新的建造者类型。 6. **简单工厂模式**:一个静态工厂方法根据传入的...

    java与模式

    - 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。 4. Java学习资源 该部分内容提到了一个Java学习群,这可能是一个提供学习支持和资源...

    java完整版模式

    - 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 结构型模式:适配器模式、装饰器模式、桥接模式、组合模式、外观模式、享元模式、代理模式。 - 行为型模式:责任链模式...

    java 建造者模式

    建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...

    Java与模式(详细的java设计模式)

    在Java编程中,设计模式可以提升代码的可读性、可维护性和复用性,帮助开发者构建更健壮、更灵活的系统。本资料包“Java与模式”可能包含了关于各种Java设计模式的详细讲解,旨在帮助Java程序员理解和应用这些模式。...

Global site tag (gtag.js) - Google Analytics