适配器设计模式 - 方法调用或构造函数中的依赖项?

时间:2012-06-01 23:33:10

标签: java design-patterns adapter

这个例子非常人为,所以请耐心等待。

我有两个Java类ChairDesk,它们来自第三方(即我无法更改它们)。

public class Chair {
  //...
}

public class Desk {
  //...
}

对于每个类,我需要运行一个依赖doWork()的方法DatabaseService。我的方法是创建一个适配器,为每个类实现OfficeFurniture接口。

public class ChairAdapter implements OfficeFurniture {
  //...
}

public class DeskAdapter implements OfficeFurniture {
  //...
}

public interface OfficeFurniture {
  public doWork(DatabaseService databaseService);
}

最后,问题是:在DatabaseService调用中传递doWork()或在ChairAdapterDeskAdapter的构造函数中传递它是否更好并存储实例在课堂上?还是有另一种更好的方法吗?

2 个答案:

答案 0 :(得分:2)

这取决于适配器的客户端是否知道有关数据库服务的任何信息?可能不是,所以你把它放在构造函数中。如果客户端必须知道有关数据库服务的信息,那么传递它会更好。

答案 1 :(得分:1)

如果DatabaseService类是单例,或者只需要按Adapter类实例化一次,那么传入构造函数;特别是如果每​​个Adapter类中有多个方法将使用DatabaseService实例。如果它在调用之间发生变化,则将其传递给方法。