import wvlet.airframe._
trait MessageService {
def sendMessage(message: String): Unit
}
class EmailService extends MessageService {
override def sendMessage(message: String): Unit = {
println(s"Sending email: $message")
}
}
class SMSApp(messageService: MessageService) {
def sendSMS(message: String): Unit = {
println(s"Sending SMS: $message")
}
}
object MyApp {
def main(args: Array[String]): Unit = {
val design = newDesign
.bind[MessageService].to[EmailService]
design.build[MessageService] { emailService =>
val smsApp = new SMSApp(emailService)
smsApp.sendSMS("Hello, World!")
}
}
}