`
cjuexuan
  • 浏览: 13224 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

scala实现桥接模式

 
阅读更多
package com.linewell.modeldesgin.bridge

/**
* 抽象图片
* Created by ctao on 2015/8/9.
*/
abstract class Image {
    //图片实现方式
    var imageImp : ImageImp
    //文件设置
    def parseFile(fileName:String)
}

/**
* 具体jpg图片
*/
class  JPGImage extends Image{
    override var imageImp: ImageImp = _

    override def parseFile(fileName: String) = {
        imageImp.doPaint(new Matrix)
        println(fileName+",格式为JPG")
    }
}


/**
* 具体png图片
*/
class  PNGImage extends Image{
    override var imageImp: ImageImp = _

    override def parseFile(fileName: String) = {
        imageImp.doPaint(new Matrix)
        println(fileName+",格式为PNG")
    }
}


/**
* 具体gif图片
*/
class  GIFImage extends Image{
    override var imageImp: ImageImp = _

    override def parseFile(fileName: String) = {
        imageImp.doPaint(new Matrix)
        println(fileName+",格式为GIF")
    }
}

/**
* 像素矩阵
*/
class Matrix

/**
* 图片展示特质
*/
trait ImageImp {
    def doPaint(m: Matrix)
}

/**
* win具体展示
*/
class WindowsImp extends ImageImp {
    override def doPaint(m: Matrix) = println("在windows操作系统中显示图片:")
}

/**
* linux具体展示
*/
class LinuxImp extends ImageImp {
    override def doPaint(m: Matrix) = println("在linux操作系统中显示图片")
}


/**
* mac具体展示
*/
class MaxOsImp extends ImageImp {
    override def doPaint(m: Matrix) = println("在Mac操作系统中显示图片")
}
package com.linewell.modeldesgin.bridge

/**
* 测试客户端
* Created by ctao on 2015/8/15.
*/
object Client extends App {
    /**
     * 图片
     */
    val image: Image = new JPGImage
    /**
     * 图片展示
     */
    val imageImp: ImageImp = new WindowsImp
    image.imageImp = imageImp

    /**
     * 设置文件
     */
    image.parseFile("你好")
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics