package com.linewell.modeldesgin.factorymethod
/**
* Created by ctao on 2015/8/4.
* 工厂方法模式
*/
/**
* 日志工厂特质
*/
trait LoggerFactory {
/**
* 创建日志方法
* @return 日志
*/
def createLogger():Logger
}
/**
* 日志特质
*/
trait Logger{
/**
* 写日志方法
*/
def writeLog():Unit
}
/**
* 数据库日志,继承日志特质
*/
class DatabaseLogger extends Logger{
override def writeLog(): Unit = println("数据库日志记录")
}
/**
* 文件日志,继承日志特质
*/
class FileLogger extends Logger{
override def writeLog(): Unit = println("文件日志记录")
}
/**
* 数据库日志工厂方法
*/
object DatabaseLoggerFactory extends LoggerFactory{
override def createLogger(): Logger = new DatabaseLogger
}
/**
* 文件日志方法
*/
object FileLoggerFactory extends LoggerFactory{
override def createLogger(): Logger = new FileLogger
}
package com.linewell.modeldesgin.factorymethod
/**
* Created by ctao on 2015/8/4.
* 测试客户端
*/
object Client extends App{
/**
* 日志工厂1
*/
val Logger1:LoggerFactory = DatabaseLoggerFactory
/**
* 日志工厂2
*/
val Logger2:LoggerFactory = FileLoggerFactory
Logger1.createLogger().writeLog()
Logger2.createLogger().writeLog()
}
scal实现工厂方法模式
猜你喜欢
转载自cjuexuan.iteye.com/blog/2233759
今日推荐
周排行