JavaBean构造使用Build模式
来源:互联网 发布:js当前时间减去一个月 编辑:程序博客网 时间:2024/06/04 18:53
最近发现Android项目JavaBean构造时用了Build模式,不知道为什么,转载下面,现在AndroidSutido可以自动生成Build
在后面的测试中,发现系统有时会蹦出一个数据库异常,最终调查发现就是因为JavaBean的内容不正确才导致的。
我觉得这个原因主要是因为对JavaBean的创建和向JavaBean中设置内容是分离的,因为数据库中的表在创建时有些约束,像主键约束,非空约束等,而我们在设置完JavaBean中的属性以后,并不能保证由于疏忽或者其它原因导致,JavaBean内容设置的不正确,从而在DAO层,插入数据库是就会失败。
像上面这种错误,在编码阶段就应该避免,正因为上面那种设计才滋生的那种错误。如果我们能将创建JavaBean和设置内容揉在一起,并在当中增加相应的检查,就可以避免这些问题的发生,将Oracle错误转换成Java异常,然后交给try-catch块去处理。
Student表的结构如下:
下面这是利用builder模式设计的Java类:
- public class Student {
- private String id;
- private String name;
- private String sex;
- private int age;
- private String department;
- public static class Builder {
- /*
- * 只能指定一次。
- */
- private final String id;
- private final String department;
- private String name = "";
- private String sex = "男";
- private int age = 20;
- /*
- * 非空属性,必须在构造器中指定。
- */
- public Builder(String id, String department) {
- this.id = id;
- this.department = department;
- }
- /*
- * name,sex,age可选择属性,提供特殊的setter方法。
- */
- public Builder name(String name) {
- this.name = name;
- return this;
- }
- public Builder sex(String sex) {
- this.sex = sex;
- return this;
- }
- public Builder age(int age) {
- this.age = age;
- return this;
- }
- /*
- * Student对象创建器,想得到一个Student对象必须使用build 方法,
- * 在方法中增加对Builder参数的验证,并以异常的形式告诉给开发人员。
- */
- public Student build() {
- /* 检查Builder对象中的数据是否合法。
- * 针对这个例子,就是检查主键冲突,外键制约等
- * 如果不满足我们可以抛出一个IllegalArgumentException
- */
- return new Student(this);
- }
- }
- private Student(Builder builder) {
- this.id = builder.id;
- this.name = builder.name;
- this.sex = builder.sex;
- this.age = builder.age;
- this.department = builder.department;
- }
- /*
- * 只提供getter方法
- */
- public String getId() {
- return id;
- }
- public String getName() {
- return name;
- }
- public String getSex() {
- return sex;
- }
- public int getAge() {
- return age;
- }
- public String getDepartment() {
- return department;
- }
- }
使用Builder模式前后Student对象创建的变化。
现在创建一个Student对象,只能像这样了:
- Student.Builder builder = new Student.Builder("03041013", "计算机");
- builder.name("李华");
- Student student = builder.build();
或者
- student = new Student.Builder("03041013", "计算机").name("李华").build();
如果你在传入builder中的参数不合乎业务或者非法,那么就不能创建student对象,这时候你可以通过捕获IllegalArgumentException,从而得知失败的原因。
引入Builder设计模式以后,代码保持JavaBean好的可读性,但同时增强了安全性,将Student类的创建和设置内容揉在了一起,并增加了安全性检查,提高了系统的健壮性,同时防止了编码中的一些疏忽。
0 0
- JavaBean构造使用Build模式
- 使用 Builder 模式构造 JavaBean 的好处
- 使用 Builder 模式构造 JavaBean 的好处
- 使用 Builder 模式构造 JavaBean 的好处
- Java创建对象(重叠构造器模式,javaBean模式,Builder模式)
- javaBean构造器
- javaBean使用
- JavaBean使用
- build 模式
- Build模式
- Build模式
- JSP练习之简单计算器(使用jsp+javabean模式)
- 多个构造参数考虑使用Builder构造器模式
- JavaWeb -- JSP+JavaBean模式
- JavaBean、Web开发模式
- jsp javabean开发模式
- javabean/jsp开发模式
- JavaBean之Builder模式
- 静态函数讲解
- Unity Android 动态更新 Assembly-CSharp.dll
- ParalleX OS 设计与实现 Parallex 操作系统设计方向讨论
- 风口的猪-中国牛市(动态规划)----百度2016研发工程师在线编程题
- Scala学习笔记11 - Actor和并发
- JavaBean构造使用Build模式
- jquery 常见常用文档操作函数
- VS里面遇到的很多错误,都是因为没有导入合适的库
- H5:Canvas:字符串,路径,背景,图片
- hdu 1252
- C#压缩文件代码
- yii 如何在布局文件里面使用多个变量?
- XCode在Storyboard中设置视图的圆角等属性
- Intent传对象