Skip to content

Instantly share code, notes, and snippets.

@filpgame
Last active July 10, 2017 22:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save filpgame/1913a9ef31a8685d1701dc587648e4a8 to your computer and use it in GitHub Desktop.
Save filpgame/1913a9ef31a8685d1701dc587648e4a8 to your computer and use it in GitHub Desktop.
Delegations no Kotlin (Medium)
interface Loggable {
public void log(String message);
}
class ConsoleLogger implements Loggable {
@Override
public void log(String message) {
System.out.println("Message");
}
}
class ToastLogger implements Loggable {
Context context;
public ToastLogger(Context context) {
this.context = context;
}
@Override
public void log(String message) {
Utils.showToast(context, message);
}
}
class Worker implements Loggable {
public Loggable logger;
public Worker(Loggable logger) {
this.logger = logger;
}
@Override
public void log(String message) {
logger.log(message);
}
public void doWork() {
log("Working");
//..
log("Work done");
}
}
Worker worker = new Worker(new ConsoleLogger());
worker.logger = new ToastLogger(getContext());
worker.doWork();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment