POGOs – Plain Old Groovy Objects

Um POJO (Plain Old Java Object) é um objeto Java simples que não segue nenhum grande modelo ou convenção (especificação) da Plataforma Java ou de seus frameworks. Pode ser visto como um subconjunto da convenção para JavaBeans.
Dessa maneira, uma classe com um construtor público padrão e getters/setters públicos poderia ser classificada como um POJO.

POGOs são POJOs criados em Groovy. A característica mais interessantes dos POGOs é a facilidade de declaração de suas propriedades:

class Person {
    String firstName
    Date birthday
}

def p = new Person()
p.firstName = 'John'
p.birthday = new GregorianCalendar(1970, Calendar.SEPTEMBER, 5).getTime()

println "p.firstName ${p.firstName}"
println "p.getFirstName() ${p.getFirstName()}"
println "p.birthday ${p.birthday}"

p.setFirstName('Robert')
println "p.firstName ${p.firstName}"
println "p.getFirstName() ${p.getFirstName()}"

Também é possível definir propriedades da mesma forma que em Java

class Person {
    String firstName
    
    /* Convenção de Java para propriedades. */
    private String __internalLastName
    public String getLastName() {
        return this.__internalLastName
    }

    public void setLastName(String lastName) {
        this.__internalLastName = lastName
    }
}

def p = new Person()
p.firstName = 'John'
p.lastName = 'Doe'

println "p.firstName ${p.firstName}"
println "p.getFirstName() ${p.getFirstName()}"
println "p.lastName ${p.lastName}"
println "p.getLastName() ${p.getLastName()}"

/* Lista todas as propriedades desse objeto. */
println "p.properties ${p.properties}"

Os POGOS ou Groovy Beans contam com um construtor especial. Além disso, suas propriedades podem ser acessadas ou modificadas de forma dinâmica:

class Person {
    String firstName
    
    private String __internalLastName
    public String getLastName() {
        return this.__internalLastName
    }
    public void setLastName(String lastName) {
        this.__internalLastName = lastName
    }
}

/* Construtor especial. */
p = new Person([firstName: 'John', lastName: 'Doe'])
println "p.firstName ${p.firstName}"
println "p.lastName ${p.lastName}"

p = new Person(firstName: 'No', lastName: 'One')
println "p.firstName ${p.firstName}"
println "p.lastName ${p.lastName}"

/* List todas as propriedades desse objeto. */
println "p.properties ${p.properties}"

/* Modifica apenas as propriedades que terminarem com 'Name' */
for (prop in p.properties.keySet()) {
    if (prop.endsWith('Name')) {
        p[prop] = '!!!'
    }
}

println "p.firstName ${p.firstName}"
println "p.lastName ${p.lastName}"

Referências adicionais

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


− 5 = dois

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>