我有一个关于使用服务的疑问。我有一个初始化对象的服务,将服务实例传递给对象以便用于该对象是否是一种不好的做法?一个简化的对象如下:
public class MyService extends Service {
MyObject myObject = new MyObject(this);
...
}
public MyObject {
private MyService myService;
public MyObject(MyService myService) {
this.myService = myService;
}
...
private void exampleMethod() {
myService.method();
}
}
你认为呢?这是一个不好的做法吗?我该如何解决这个问题而又不必传递服务实例?
事实上,我想将代码分成两个类,因为它们的功能不同。websocket从服务类中连接,但是通过websocket发送/解析事件的方法在第二个类中。我这样做是为了避免一个类有2000行代码,并且按功能来分割代码。服务处理websocket连接,而其他类处理其他功能。由于一切都是异步的,所以第二个类需要服务类的实例。例如:如果收到并解析错误(在第二个类中),则必须调用服务类以更新其状态并重新连接。
编辑: 我正在考虑实现以下解决方案:
public class MyService extends Service {
MyObject myObject = new MyObject() {
protected void onSuccess() {
...
}
};
...
}
public abstract class MyObject {
public MyObject() {
}
protected abstract void onSuccess();
...
private void exampleMethod() {
...
onSuccess()
}
}
我越想,就越认为这是更好的解决方案。你觉得呢?非常感谢你的帮助!