Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** Account */
- class Account extends ConsoleLogger with ShortLogger with TimestampLogger {
- private var balance = 0
- log("Account created")
- def deposit(amount: Int) {
- balance += amount
- log("deposit of " + amount + ". new balance: " + balance)
- }
- }
- /** Logger */
- trait Logger {
- def log(msg: String) // abstract method
- }
- trait ConsoleLogger extends Logger {
- def log(msg: String) { // concrete method
- println(msg)
- }
- }
- trait TimestampLogger extends Logger {
- // abstract for it might call super[Logger].log
- abstract override def log(msg: String) {
- super.log(new java.util.Date() + " " + msg)
- }
- }
- trait ShortLogger extends Logger {
- val maxLength = 15
- // abstract for it might call super[Logger].log
- abstract override def log(msg: String) {
- super.log(
- if (msg.length <= maxLength) msg
- else msg.take(maxLength - 3) + "..."
- )
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement