If we declare our original logger as final, we will see that our code will not compile. There is a different way to use the adapter pattern in this case. Here is the code:
class FinalAppLogger extends Log { private val logger = new FinalLogger override def info(message: String): Unit = logger.log(message, "info") override def warning(message: String): Unit = logger.log(message, "warning") override def error(message: String): Unit = logger.log(message, "error") override def debug(message: String): Unit = logger.log(message, "debug")}
In this case, we simply wrap the final logger inside a class and then use it to call the log method with different parameters. The usage is absolutely the same as ...