建造者模式Builder
来源:互联网 发布:h3c 查看当前端口配置 编辑:程序博客网 时间:2024/06/03 17:45
建造者模式Builder,大家应该不陌生,在ImageLoader中使用的就是Builder模式,这里就简单的为大家介绍一下Builder模式,如有不同见解,请提出功能学习,谢谢!
一、定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
二、使用场景
1、相同的方法,不同的执行顺序,产生不同的事件结果时
2、多个部件或零件,都可以装配到一个对象,但是产生的运行结果又不相同时
3、产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用,这个时候使用建造者模式非常适合
4、当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时
三、简单的User实例
1、封装Users实例
public class Users { private final String mFirstName;//必选 private final String mLastName;//必选 private final String mGender;//可选 private final int mAge;//可选 private final String mPhoneNumber;//可选 private String mContry; Users(UserBuilder builder) { mFirstName = builder.firstName; mLastName = builder.lastName; mGender = builder.gender; mAge = builder.age; mPhoneNumber = builder.phoneNumber; mContry = builder.contry; } public String getFirstName() { return mFirstName; } public String getLastName() { return mLastName; } public String getGender() { return mGender; } public int getAge() { return mAge; } public String getPhoneNumber() { return mPhoneNumber; } public String getContry() { return mContry; } public static class UserBuilder { private final String firstName;//必选 private final String lastName;//必选 private String gender;//可选 private int age;//可选 private String phoneNumber;//可选 private String contry;//可选 public UserBuilder(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public UserBuilder gender(String gender) { this.gender = gender; return this; } public UserBuilder age(int age) { this.age = age; return this; } public UserBuilder phoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; return this; } //设置好的默认的值,用户只需要设置是否添加这个默认值 public UserBuilder contry(){ this.contry = "中国"; return this; } public Users build() { return new Users(this); } }}
2、代码中使用
Users build = new Users.UserBuilder("张", "三") .age(18) .gender("man") .phoneNumber("183551") .contry() .setOnClick("确定", new CallBack() { @Override public void callBack() { System.out.println("我是回调........."); } }) .build();list.add(build);Users.UserBuilder builds = new Users.UserBuilder("李", "四");builds.age(30);builds.gender("woman");builds.phoneNumber("123456");builds.contry();builds.build();list.add(builds.build());
优点:
1、良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成细节
2、建造者独立,容易扩展
缺点:
会产生多余的Builder对象,消耗内存
以上是Builder模式的简单介绍及使用,欢迎评论
阅读全文
1 0
- Builder 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式 - builder
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式(Builder)
- 建造者模式--Builder
- Builder建造者模式
- builder建造者模式
- Builder(建造者模式)
- 建造者模式,Builder
- 建造者模式(Builder)
- 建造者(Builder)模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式(Builder)
- IO流(标准输入输出流)
- 骑行--在路上
- 套接字-百度摘录
- ruby on rails select下拉框的使用,包括实现下拉框内容匹配搜索
- Number Sequence
- 建造者模式Builder
- Androd四大组件之Service服务
- jar包和war包的介绍和区别
- C++中struct和class的区别
- (人脸识别2-4)——关于CNN卷积神经网络
- POJ-2368-Buttons [找规律]
- Android源码研究环境搭建[6]调试系统源代码
- IO流(RandomAccessFile随机访问流)
- linux安装火狐浏览器