scal实现工厂方法模式

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()
}

猜你喜欢

转载自cjuexuan.iteye.com/blog/2233759
今日推荐