-->

了解使用工厂方法背后像JDBC服务提供商架构的概念(Understanding the concep

2019-07-30 19:46发布

从有效的Java ( 第1项考虑静态工厂方法代替构造函数 ):

类通过静态工厂方法返回的对象的不需要在包含此方法的类被写入的时间甚至存在。 这种灵活的静态工厂方法形成服务提供商框架,如Java数据库连接API(JDBC)的基础。 服务提供商框架是在多个服务提供商实现服务的系统,该系统使得实现提供给其客户,从实现脱钩他们。

我特别不理解为什么这本书是说,通过类的静态工厂方法返回的对象不一定在当时甚至还存在包含此方法的类写的? 一些人能够解释使用JDBC为例。

Answer 1:

考虑类似如下:

public interface MyService {
  void doSomething();
}

public class MyServiceFactory {
  public static MyService getService() {
    try {
      (MyService) Class.forName(System.getProperty("MyServiceImplemetation")).newInstance();
    } catch (Throwable t) {
      throw new Error(t);
    }
  }
}

有了这个代码,您的图书馆并不需要了解服务的实现。 库的用户将必须设置包含他们想使用的执行名称的系统属性。

这是什么是你不明白这句话的意思是:工厂方法会返回一些类(名称存储在系统属性“MyServiceImplementation”)的一个实例,但它绝对不知道它是什么类。 它只知道它实现MyService ,它必须有一个公共的无参数的构造函数(否则,工厂上方会抛出一个Error )。



Answer 2:

该系统提供给其客户的实现,从实现他们去耦

只要把它在简单的方式,你不必在编译时添加这些JDBC供应商的依赖。 客户可以在运行时添加自己的



文章来源: Understanding the concept behind Service provider framework like JDBC using the factory method