zoukankan      html  css  js  c++  java
  • Builder设计模式

    背景

    当一个java对象有大量的成员变量,在构造它的时候有以下几种方式

    1.构造方法传参 缺点:代码难以编写,难以阅读)

    2.使用get set方法:缺点:每个set只操作一个属性 没有相近属性进行更好的封装

    3.builder构造器

    build构造器

    builder构造器会把类的成员变量分成好几类

    比如人的姓名,年龄和id是基础信息,这三个信息可以抽象成一个构造方法

    身高和体重 抽象成一个外形的构造方法。

    代码如下

        public static class PersonBuilder {
            Person p = new Person();
            public PersonBuilder basicInfo(int id, String name, int age) {
                p.id = id;
                p.name = name;
                p.age = age;
                return this;
            }
            public PersonBuilder appearancen (double weight,double height) {
                p.weight = weight;
                p.height = height;
                return this;
            }
            public Person build() {
                return p;
            }
        }

    我们则可以使用构造器构造对象

            Person p = new Person.PersonBuilder()
                    .basicInfo(1, "zhangsan", 18)
                    .appearancen (120,170)
                    .build();

    个人观点:构造器就是对set方法的一个封装,把相近set的方法封装在一个builder方法里面

  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/ssskkk/p/13934768.html
Copyright © 2011-2022 走看看