Yat*_*oel 2 java instantiation factory-pattern
我遇到过各种不允许直接创建实例的类.相反,我们必须从其他类的静态方法创建它们的实例,或者它拥有静态方法.例如:
B b = A.getB();
Run Code Online (Sandbox Code Playgroud)
要么
B b = B.getInstance();
Run Code Online (Sandbox Code Playgroud)
这背后是什么原因?
为什么他们不允许直接创建实例,如:
B b = new B();
Run Code Online (Sandbox Code Playgroud)
有些类希望控制它们实例化的方式,从而保护它们的构造函数不被公共使用.使用静态工厂方法,getInstance允许它们将控件保留在自己的代码中.
有一百万个理由想要这样做.
编辑:要解决您的注释,这不能在构造函数内完成,因为new运算符将始终创建一个新实例(除非抛出异常).在调用构造函数时,构造函数中的代码控制是否实例化对象为时已晚.
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |