这个例子非常人为,所以请耐心等待。
我有两个Java类Chair
和Desk
,它们来自第三方(即我无法更改它们)。
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()
或在ChairAdapter
和DeskAdapter
的构造函数中传递它是否更好并存储实例在课堂上?还是有另一种更好的方法吗?
答案 0 :(得分:2)
这取决于适配器的客户端是否知道有关数据库服务的任何信息?可能不是,所以你把它放在构造函数中。如果客户端必须知道有关数据库服务的信息,那么传递它会更好。
答案 1 :(得分:1)
如果DatabaseService
类是单例,或者只需要按Adapter
类实例化一次,那么传入构造函数;特别是如果每个Adapter
类中有多个方法将使用DatabaseService
实例。如果它在调用之间发生变化,则将其传递给方法。