本文主要是介绍Android设计模式(二)Builder模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、前言
Builder 模式也称为构建者模式,平时用得非常多。
二、代码实现
Builder 模式比较简单,直接上示例代码:
public class User {private final String name; //必选private final String cardID; //必选private final int age; //可选private final String address; //可选private final String phone; //可选private User(UserBuilder userBuilder){this.name=userBuilder.name;this.cardID=userBuilder.cardID;this.age=userBuilder.age;this.address=userBuilder.address;this.phone=userBuilder.phone;}public String getName() {return name;}public String getCardID() {return cardID;}public int getAge() {return age;}public String getAddress() {return address;}public String getPhone() {return phone;}public static class UserBuilder{private final String name;private final String cardID;private int age;private String address;private String phone;public UserBuilder(String name,String cardID){this.name=name;this.cardID=cardID;}public UserBuilder age(int age){this.age=age;return this;}public UserBuilder address(String address){this.address=address;return this;}public UserBuilder phone(String phone){this.phone=phone;return this;}public User build(){return new User(this);}}
}
需要注意的点:
1、User 类的构造方法是私有的,调用者不能直接创建User对象。
2、User 类的属性都是不可变的。所有的属性都添加了 final 修饰符,并且在构造方法中设置了值。并且,对外只提供getters 方法。
3、Builder 的内部类构造方法中只接收必传的参数,并且该必传的参数使用了 final 修饰符。
三、调用方式
new User.UserBuilder("Jack","10086").age(25).address("GuangZhou").phone("13800138000").build();
相比起前面通过构造函数和 setter/getter 方法两种方式,可读性更强。唯一可能存在的问题就是会产生多余的 Builder 对象,消耗内存。然而大多数情况下我们的 Builder 内部类使用的是静态修饰的 (static),所以这个问题也没多大关系。
这篇关于Android设计模式(二)Builder模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!