Android中的模式:Builder模式的优点赏析
16lz
2021-01-22
问题引出:
Android developer都写过AlertDialog,用法是先new 一个builder,然后往builder里设置属性的值,最后调用build得到类实例,完成抽象出来的类的实例化。
一个类的实例化为什么不是简单的new 对象,为什么要使用这种builder模式去build呢?
难写、难读、难维护 的重叠构造器:
Dialog中需要设置必要的参数ignorebutton、positivebutton,和可选的title、content、icon参数,这样就存在不止一个构造函数,类似
new Dialog(ignorebutton, positivebutton);
new Dialog(title, ignorebutton, positivebutton);
....
code中常有一个类有多个构造函数,构造函数的参数个数一般递增,层层调用,我们叫他重叠构造器模式(telescoping constructor)。
参数个数少用这个不会有问题,参数个数多了,创建构造函数时,写参数会让人头疼,修改参数会让人很难维护。
易维护、难一致的JavaBean:
使用JavaBean的方式可以避免传参数不知道对应哪个字段、修改参数类型容易对应错的问题。在JavaBean的setter方法中明确了对应的字段和类型。省去了重叠构造方法。
但JavaBean也有他的缺陷,JavaBean对象可以随时调用setter方法进行设置,这会让Bean缺乏一致性、也就是类的实例的一致性没法保证了。特别是在多线程情况下,会出现很难分析的bug。
1 classBean{2 intx,
3 inty,
4setx(){}
5setY(){}
6}
更多相关文章
- javaScript函数中执行C#代码中的函数
- JavaScript unshift()函数移入数据到数组第一位
- Java 8 新特性-菜鸟教程 (3) -Java 8 函数式接口
- java socket参数详解:TcpNoDelay
- 在spring 中如何注入map,set,list,property等参数
- 如何将动态参数传递给jquery函数
- Java多线程六:线程优先级和yield()让步函数
- 使用字符串参数调用AndroidJni静态方法。
- Java开发水吧点饮品系统(顶层父类对象做接口参数)