一、获取一个实例的方法
1.提供一个公有的构造器
2.提供一个静态工厂方法(提供一个返回类实例的静态方法,不同与设计模式中的工厂方法)
二、静态工厂方法的优势
1.优势一 :有方法名称,便于记忆、阅读跟使用
通常,为了创建不同的实例,我们是通过不同的参数来创建多个构造器,但是这样的构造器必须
要有文档的说明才可以分清楚,以及参数传入的顺序不对造成错误;而通过静态工厂方法便可以通过
名称来了解到使用哪个方法返回实例,更便于开发人员调用;
2.优势二:不必每次调用的时候都创建一次对象,可以直接返回对象并多次使用
静态方法可以为重复的对象返回相同的对象,这样便于控制什么时刻哪些实例可以存在
3.优势三:它可以返回原返回类型的任何子类型的对象
例如:Java Collections Framework的集合接口,有32个便利实现,分别提供了不可修改的集合、同
步集合等等 。几乎所有的这些实现都是通过静态工厂方法在一个不可实例化的类中导出 ,返回对象非公
有。
使用静态工厂方法时,被返回的都是有相关的接口精确指定的,不需要阅读文档,并且客户端可以通
过接口来引用被返回的对象,而并不是通过它的实现类来返回对象。
对于JDBC来说,Connection是服务接口,DriverManager.registerDriver是提供者注册API
DriverManger.getConnection是服务访问接口,Driver是服务提供者接口。
4.优势四:在创建参数化实例的时候让代码变得更加简洁。
三、缺点
1.静态工厂方法的类如果不含公有的或者受保护的构造器,就不能被继承或者子类化
2.与其他的静态方法没有区别