Builder模式

builder 模式
分离复杂对象的构建和表示
同样的构建过程可以创建不同的表示
一个类构建的话,需要传递50个参数,这个时候就可以使用

        Person person = new Person.PersonBuilder()
                .basicInfo(1, "liguojing", 29)
                .score(100)
                .weight(150)
                .location("袁旗寨", "42排")
                .build();
//        如果不想指定这个对象的一个部分,可以灵活的注释掉就行,
//        用不到的就不用每次都传递,最后就拿到了要构建的对象Person
//作为一个人,他可能有很多属性,
public class Person {
    private int id;//编号
    private String name;//名字
    private int age;//年龄
    private double weight;//体重
    private int score;//分数
    private Location location;//住址
    private Person() {
    }

    //person 类里面的静态内部类,只用来构建Person,别人 创建不了Person,只能由它来创建
    //相当于你叫它静态工厂,也没问题
    public static class PersonBuilder{
        // 由于它是Person静态内部类,所以可以访问private的构造方法
        private 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 weight(double weight){
            p.weight = weight;
            return this;
        }
        public PersonBuilder score(int score){
            p.score = score;
            return this;
        }
        // 指定他的住址,街道 和 门牌号码
        public PersonBuilder location(String street,String roomNo){
            p.location = new Location(street,roomNo);
            return this;
        }
        public Person build(){
            return p;
        }
    }
    static class Location{
        String street;
        String roomNo;
        public Location(String street,String roomNo){
            this.street = street;
            this.roomNo = roomNo;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值