1 防止对象被随意创建
2 用于实现单例
3 工具类防止实例化(不创建对象,方法设为静态,可通过对象.来调用)
4 应用于工厂模式的实现
父类方法调用子类实现
1。你可以返回任何的Shape类型,包括Shape的子类。比如你可以把makeShape写成这样:
public class Shape {
private Shape() {
/* set something here */
}
public static Shape makeShape(/* arglist */) {
System.out.println("here is the shape you ordered");
if (retangle)
return (new Retangle(/* arglist*/));
if (Circle)
return (new Circle(/* arglist */));
/* you can return as many shapes as you like */
}
}
这里假设Retangle 和 Circle 都是shape的子类,并且和Shape类在同一个包內,
Shape类可以访问子类的构造函数。这样shape就提供了一个图形工厂。 用户通过一
个接口就可以生成不同的图形。事实上,这种用法被称为“工厂模式”。
5 方便抛出异常
在构造器中的异常一般会被jvm抛弃