patrón de diseño (13) - Modo de Constructores (Constructor)

Builder (Constructor) patrón de diseño (llamado modo de diseño del constructor):

Cuando los datos internos de una clase es el tiempo demasiado complejo (por lo general responsable de mantener las clases de datos, tales Config, VO, PO, Entidad ...), entonces puede que tenga que ser creado para entender la estructura interna de esta clase, hay estas cosas montaje y otras organizaciones es como un gran montón de lío de cosas, esto aumentará el costo del tiempo de aprendizaje y va a ser muy confuso, esta vez quería algo de lo que ah quieren otra manera de gestionar los datos acerca de esta clase de ella, cómo hacer en el momento de la creación paso a paso para él, y no me dejó una buena legibilidad del código estaba hablando ah, lo que yo quiero también están bien colocados, este es el modo de escenarios de aplicación los modelos Builder, Builder pueden ser construidos y una clase representar separación.

Mira un ejemplo:

public class Student {

    private int id;
    private String name;
    private String passwd;
    private String sex;
    private String address;

    // 构造器尽量缩小范围
    private Student() {
    }

    // 构造器尽量缩小范围
    private Student(Student origin) {
        // 拷贝一份
         this.id = origin.id;
        this.name = origin.name;
        this.passwd = origin.passwd;
        this.sex = origin.sex;
        this.address = origin.address;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPasswd() {
        return passwd;
    }

    public String getSex() {
        return sex;
    }

    public String getAddress() {
        return address;
    }

    /**
     * Student的创建完全依靠Student.Builder,使用一种方法链的方式来创建
     *
     */
    public static class Builder {

        private Student target;

        public Builder() {
            target = new Student();
        }

        public Builder address(int id) {
            target.id = id;
            return this;
        }

        public Builder name(String name) {
            target.name = name;
            return this;
        }

        public Builder password(String passwd) {
            target.passwd = passwd;
            return this;
        }

        public Builder sex(String sex) {
            target.sex = sex;
            return this;
        }

        public Builder address(String address) {
            target.address = address;
            return this;
        }

        public Student build() {
            return new Student(target);
        }
        
    }

}

El estudiante no directamente de la nueva, su constructor ha sido procesado para que sea accesible gama lo más pequeño posible, se construye sólo por su Student.Builder, un tipo de cadena se proporciona un método en un conjunto de clases en Student.Builder manera de establecer el valor, y luego en la construcción final () devuelve el método cuando un objeto Student, y ahora quiere crear un objeto Student, de la siguiente manera:

... Estudiante s = new Student.Builder () nombre ( "CC") contraseña ( "qwerty") sexo ( "M") .Address ( "Vía segundo brazo giratorio") .build ();

Luego comparar (en condiciones de uso normales) Si no se utiliza el modo de constructores:

/**
 * 学生实体
 */
public class Student {

    private int id;
    private String name;
    private String passwd;
    private String sex;
    private String address;

    public Student() {
    }

    public Student(String name, String passwd, String sex, String address) {
        super();
        this.name = name;
        this.passwd = passwd;
        this.sex = sex;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPasswd() {
        return passwd;
    }

    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}

Crear un objeto:

Student s=new Student("佟丽娅","qwerty","女","银河系第一");

Comparar los pros y los contras de un análisis de la conducta:

Constructor modo: el método constructor ventaja colocador puede tomar los comentarios en un modo similar, ¿qué valor podemos saber con claridad acaba de establecer con exactitud alta legibilidad, la desventaja es relativamente largo.

rutina general: la ventaja de relativamente simple, el desarrollo de alta eficiencia, la desventaja es que si el argumento es realmente una gran cantidad, entonces el diablo sabe lo que significa cada uno correspondiente ah. (Participarán, con todos opcionales en una línea y pasado dentro del constructor);

Publicados 295 artículos originales · ganado elogios 37 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/tianshan2010/article/details/104721897
Recomendado
Clasificación