Sintaxe desta classe

Eu ainda não entendi direito a sintaxe dessa classe, alguém poderia me explicar melhor?

[code]public class CandleBuilder {

    private double abertura;
    private boolean aberturaDefinida; 
    private double fechamento;
    private boolean fechamentoDefinido; 
    private double minimo;
    private boolean minimoDefinido;
    private double maximo;
    private boolean maximoDefinido;
    private double volume;
    private boolean volumeDefinido;
    private Calendar data;
    
    public CandleBuilder abertura(double abertura) {
            this.abertura = abertura;
            aberturaDefinida = true;
            return this;
    }[/code]

principalmente aqui: public CandleBuilder abertura(double abertura)

qual a sua duvida em relação a sintaxe?

não entendi o que vc precisa…

não tinha visto ainda essa sintaxe public CandleBuilder abertura(double abertura) . Pois sempre criei assim public double getAbertura() { return abertura; }

o primeiro item eh um construtor da classe.
o segundo eh um simples getter.

O pattern “builder” é muito útil (em vez de usar getters e setters bobocas) porque permite criar objetos de forma mais limpa. Um exemplo de uso da tal classe:

CandleBuilder cb = new CandleBuilder()
    .abertura (100.00)
    .fechamento (110.00)
    .minimo (50.00)
    .maximo (120.00);

Note que isso é mais legível que usar uma montanha de setters, ou um construtor com 4 parâmetros, como:

CandleBuilder cb = new CandleBuilder (100.00, 110.00, 50.00, 120.00); // qual é a abertura, fechamento, mínimo e máximo?

Tá eu já tinha visto construtor, mas desta maneira public final class Negocio { private final double preco; private final int quantidade; private final Calendar data; public Negocio(double preco, int quantidade, Calendar data) { this.preco = preco; this.quantidade = quantidade; this.data = data; }

Dessa maneira aí do builder ,ele estaria criando métodos com os nomes das variáveis? é isso?

neste caso ele está setando o comportamento padrão e o valor das variáveis quando vc instancia esta classe.

Mas não é nesse acima, mas neste aqui public CandleBuilder abertura(double abertura) { this.abertura = abertura; aberturaDefinida = true; return this; } que não sei.

ai vc está setando o valor das variáveis e tem a propria classe como retorno quando vc instancia ela…

agora como vai usar isso já não sei te dizer…

Isso é um método, não um construtor.

Basicamente é como o entanglement, isso é usado numa técnica chamada method chaining, que é o conceito principal por trás de interfaces fluentes.

cara a parte que voce esta com dificuldade não é um construtor mas sim
um metodo que tera como retorno um objeto do tipo CandleBuilder

public CandleBuilder abertura(double abertura) { this.abertura = abertura; aberturaDefinida = true; return this; }

então assim: essa parte “abertura(” é um método da classe CandleBuilder, que recebe um double e o popula, ainda popula a variável abertura e aberturaDefinida e retorna isso pra própria classe?

Abertura é um método de CandleBuilder este método realiza a sua função de setar o atributo abertura e aberturaDefinida e seguindo o method chaining retorna sua instância por onde o metodo foi chamado (contexto atual do método), possibilitando continuar a configuração da instância.

Já faz muito tempo, mas a primeira vez que vi um Method chaining fiquei meio perdido também, kk, isso pode ajudar: