背景:
程序运行的时候,我们有时候为了获取某个类自身的一个实例,一共有两种途径。一种是通过构造器,一种是通过静态工厂方法。
什么是静态工厂:
http://blog.csdn.net/mingyunduoshou/article/details/6149758 这里有一篇文章对其讲解得很详细。
为什么选择静态工厂:(相对于构造方法)
1. 静态工厂方法有名称。为了使程序更加具有可读性,我们常常会取一些有意义的方法名称。比如我们如果对一个类提供两种构造方法,那么我们可以通过对于传递参数类型的不同来实现不同的构造方法。但是这么做是有弊端的,作为开发者,我们经常会记不清该用哪个构造器。但是对于静态工厂方法,是可以自己取一些有意义的名称。比如valueOf(),或者getInstance();
2. 静态工厂方法不需要每次调用的时候都创建一个新对象。这可以避免创建不必要的重复对象。
3. 静态工厂方法可以返回类型的任何子类型的对象。灵活性在于API可以返回对象,同时又不会使对象的类变成公有的。
服务提供者框架:
1. 多个服务提供者实现一个服务,系统为服务提供者提供多个实现,并把它们从多个实现中解耦出来。
2. 服务提供者框架中的重要组件:
a) 服务接口(Service Interface)