Во-первых, ImageThread, вероятно, должен либо расширять Thread, либо переименовываться во что-то вроде ImageUpdateTask.
Как вы упомянули в своем вопросе, причина, по которой его трудно использовать повторно, заключается в том, что он слишком сильно связан.Эту проблему можно решить путем абстрагирования методов от отдельных интерфейсов.
public interface Receiver<T> {
public void pass(T t);
}
-
public class ImageThread extends Thread {
private Bitmap image;
private final String url;
private final Receiver<Bitmap> updater;
public ImageThread(String url, Receiver<Bitmap> updater) {
this.url = url;
this.updater = updater;
}
@Override
public void run() {
Bitmap img = downloadImage.connectServerForImage(this.url);
//data processing
image = img;
updater.pass(image);
}
}
-
public class CustomEventFieldUpdater implements Receiver<Bitmap> {
@Override
public void pass(Bitmap image) {
//TODO
}
}
-
public class CustomEntryFieldUpdater implements Receiver<Bitmap> {
@Override
public void pass(Bitmap image) {
//TODO
}
}