Refactoring to Patterns 读书笔记(一)

来源:互联网 发布:居民可支配收入数据 编辑:程序博客网 时间:2024/05/20 23:31

应用 Create Methods 模式代替构造器(constructor)

在面向对象的语言中,类的构造都是通过类的构造器完成的。但是OOP技术经过这么多年的发展,发现直接把构造器暴露给客户使用,在实践中并非一个很好的技术方式,故此各种 Factory 模式应运而生。就 Java 语言而言,构造器的缺点或者限制至少有如下三点:

1.应为构造器的名字是不能随意选择的,只能和类名保持一致。因此,构造器的名称有时候不能很好的反映它本身的工作意图,尤其是在一个类中有很多构造器的情况下。

2.还是因为构造器的名字是固定的缘故,我们也就不能创造两个具有相同特征(signature)的构造器。

3.客户代码直接使用构造器获得所需要的类实例,就意味着要在客户代码中使用 new 关键字,而“任何一行使用了 new 关键字的代码都违反了 DIP”(依赖倒置原则)。

Create Methods 模式的实现非常简单,只需创建一些 static 或者非 static 的方法进行类的实例化工作,用以替换众多的构造器。

 

如果类中的 create methods 太多,就容易混淆类的原初意图,也有损于代码的可读性和可维护性。在这种情况下,可以考虑为该类单独写一个 factory class,将创建对象的方法都分离出来。

 


Chain Constructors

如果类中的多个构造器之间存在重复的代码,可以将之“串”在一起,消除重复代码。

 

 
原创粉丝点击