scala实现设计模式之享元模式
来源:互联网 发布:mmd 动作数据 r 18 编辑:程序博客网 时间:2024/06/11 05:45
package com.linewell.modeldesgin.flyweightimport scala.collection.mutable/** * 享元模式 * Created by ctao on 2015/8/29. *//** * 坐标样例类 * @param x x坐标 * @param y y坐标 */case class Coordinates(x: Int, y: Int)/** * 抽象享元类 */abstract class IgoChessman { /** * 获得棋子的颜色 * @return 棋子颜色 */ def color(): String /** * 展示方法 * @param coordinates 坐标样例类 */ def display(coordinates: Coordinates): Unit = { /** * 如果没有颜色就打印没有颜色 */ if (color() == "没有该颜色的棋子"){ println(color()) }else{ println("棋子颜色:" + color() + "棋子位置:" + coordinates.x + "," + coordinates.y) } }}/** * 黑色棋子 */object BlackIgoChessman extends IgoChessman { override def color() = "黑色"}/** * 白色棋子 */object WhiteIgoChessman extends IgoChessman { override def color() = "白色"}/** * 享元工厂类 */object IgoChessmanFactory { /** * 存放享元对象的HashMap */ private val hm = new mutable.HashMap[String, IgoChessman] {} /** * 黑色棋子 */ val black: IgoChessman = BlackIgoChessman /** * 白色棋子 */ val white: IgoChessman = WhiteIgoChessman hm.put("b", black) hm.put("w", white) /** * 获取棋子 * @param color 颜色 * @return 棋子 */ def getIgoChessman(color: String): IgoChessman = hm.getOrElse(color, new IgoChessman { override def color(): String = "没有该颜色的棋子" })}package com.linewell.modeldesgin.flyweight/** * 测试客户端 * Created by ctao on 2015/8/29. */object Client extends App { /** * 享元工厂 */ val factory = IgoChessmanFactory /** * 黑色棋子1 */ val black1 = factory.getIgoChessman("b") /** * 黑色棋子2 */ val black2 = factory.getIgoChessman("b") /** * 黑色棋子3 */ val black3 = factory.getIgoChessman("b") black1.display(Coordinates(1, 2)) black2.display(Coordinates(1, 4)) black3.display(Coordinates(1, 3)) println("判断棋子是否相同:" + black1.eq(black2)) val white1 = factory.getIgoChessman("w") val white2 = factory.getIgoChessman("w") white1.display(Coordinates(0,0)) white2.display(Coordinates(1,1)) println("判断棋子是否相同:" + white1.eq(white2)) val error = factory.getIgoChessman("c") /** * 错误的请求 */ error.display(Coordinates(1, 0))}
0 0
- scala实现设计模式之享元模式
- scala实现设计模式之原型模式
- scala实现设计模式之适配器模式
- scala实现设计模式之组合模式
- scala实现设计模式之外观模式
- scala实现设计模式之代理模式
- scala实现设计模式之命令模式
- scala实现设计模式之备忘录模式
- scala实现设计模式之迭代器模式
- scala实现设计模式之状态模式
- scala实现设计模式之观察者模式
- scala实现设计模式之访问者模式
- 设计模式之享元模式,C++实现
- GOF23设计模式之享元模式的实现
- 《大话设计模式》java实现之享元模式
- 设计模式之享元
- 设计模式之享元
- 设计模式 之 享元
- Java中基于Rxtx的串口操作
- HDU 1062 Text Reverse(水~)
- SDUT 3305 质数中的质数
- 1034. Head of a Gang (30)
- 机器学习算法与Python实践之(八)朴素贝叶斯
- scala实现设计模式之享元模式
- 求一个整数数组中第二大的数
- 做第一个小项目的一点思考(关于备份文件的妙用以及误删文件解决办法)
- 《第一行代码》读书笔记(二)----UI开发(上)
- 关于tomcat出现闪退问题
- Android打包app报错
- SDUT 3300 完美字符串
- C++程序的运行顺序
- U-boot