建造者模式实践Java开发Java经验技巧.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
建造者模式实践Java开发Java经验技巧.doc

建造者模式实践-编程开发技术 建造者模式实践 木文由ImportNew?kingviker翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要 求。 我不打算跳入设计模式的过多细节中,因为已经有一大堆的文章和书籍很详细的 解释过了。所以我打算告诉你为什么和什么时候你应该考虑使用设计模式。然而, 值得一提的是本文中的模式和四人帮的《Design Patterns: Elements of Reusable Object-Oriented Software》一书中的提出的有点不一样。因为原生 模式专注于抽象构建的步骤,所以通过使用不同的建造者的实现我们能得到不同 的结果,然而在本文中解释的设计模式是讨论如何移除源口丁?多构造函数,多可 选参数和滥用的setters方法屮那些不必要的复杂的事物。 public class User final final final final finalprivate private private private private假设你有一个包含大量属性的类,就像下面的User类一样。让我们假设你想让 这个类不可变(顺便说一句,除非你有一个真正的好理由,让你不必总是向着不 可变这个目标奋斗。我们会在另一篇文章中讨论它)。 public class User final final final final final private private private private private String firstName; //required String lastName; //required int age; //optional String phone; //optional String address; //optional 现在想象一下,在你的类中右一些属性是必须的,冇一些是可选的。你会如何创 建这个类的实例?所有的屈性都被声明成fineil类型,所以你必须在构造方法中 设置它们,但是你也想让这个类的客户端冇忽略可选屈性的机会。 一个首先想到的可选方案是有一个构造方法是只接收必须属性作为参数,一个是 接收所有必须属性和第一个可选属性,再一个是接收两个可选属性等等。这看起 來会是什么样的? 看起来这样: String lastName) {0); String lastName) { 0); public User (String firstName, String lastName, int age) this(firstName, lastName, age, ); publ ic User (Str in g f irstNeime, St ring lastName, int age, Strin g phone) this (firstName, lastName, age, phone, ); public User (S tring f 让 stName, Str in g lastName, int age, St ring phone, String address) { this.firstNamc 二 firstNamc; this.lastName = lastName; this, age = age; this.phone 二 phone; thi s.address = address; } 这种构造对象的方式的好处是它可以正常工作。然而,这种方式的问题也是显而 易见的。当你只有儿个属性的时候不是什么大问题,但是随着属性个数的增加, 代码变的越来越难阅读和维护。更重要的是,对客户端来说代码变得越来越难使 用。 客户端里我该调用那一个构造方法?有两个参数那个?三个参数那个?我没有 显示传值的那些参数的默认值都是什么?如何我只想给address属性设置一个 值,但是不想给age和phone设置该怎么办?这种情况下,我不得不调用能接收 所有参数的构造方法并传递默认值给那些我不关心的可选参数。另外,一些参数 有相同的类型很容易混淆。第一个String类型参数对应的是phone还是 address? 因此我们冇什么其他选择来应对这种场景?我们可以总是遵循JavaBeans惯例, 有一个默认的无参构造方法并口毎个属性都有getter和setter方法。就彖这样: public class User { private String firstNamc; // required private String lastName; // required private int age; // optional private String phone; // optional private String address; //optional p

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档