>>583
public interface Logger {
public void printMessage(String s);
}
public class SystemOutLogger implements Logger{
....
}
public class TextAreaLogger implements Logger{
....
}

interface Loggee {
public void setLogger(Logger logger);
}
public class LoggeeObject implements Loggee {
private Logger logger;
public void setLogger(Logger logger){ this.logger = logger; }
void log(String s){ if (logger != null) logger.printMessage(s); }
}

public class AnyModel extends LoggeeObject {
anyMethod(){
....
log("ぬるぽ");
}
}