1

这个例子是高度做作的,所以请耐心等待。

我有两个 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);
}

最后,问题是:是传递调用更好,还是传递DatabaseServicedoWork()构造函数中ChairAdapterDeskAdapter在类字段中存储一个实例?还是有其他更好的方法?

4

2 回答 2

2

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

于 2012-06-01T23:46:54.183 回答
1

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

于 2012-06-01T23:45:23.600 回答