scala实现设计模式之抽象工厂方法
2015-08-08 15:54
141 查看
package com.linewell.modeldesgin.abstractfactory /** * Created by ctao on 2015/8/8. * 抽象工厂模式 */ /** * 皮肤工厂特质 */ trait SkinFactory { /** * 创建按钮方法 * @return 按钮特质 */ def createButton(): Button /** * 创建文本框方法 * @return 文本框特质 */ def createTextField(): TextField } /** * 按钮特质 */ trait Button { /** * 展示方法 */ def display(): Unit } /** * 文本框特质 */ trait TextField { /** * 展示方法 */ def display(): Unit } /** * 春天皮肤工厂,生产春天皮肤的文本框和按钮 */ object SpringSkinFactory extends SkinFactory { /** * 春天皮肤按钮 */ class SpringButton extends Button { override def display(): Unit = println("spring button") } /** * 春天皮肤文本框 */ class SpringTextField extends TextField { override def display(): Unit = println("spring textField") } /** *复写方法,产生春天皮肤的按钮 * @return 按钮特质 */ override def createButton(): Button = new SpringButton /** * 复写方法,产生春天皮肤的文本框 * @return 文本框特质 */ override def createTextField(): TextField = new SpringTextField } /** * 夏天皮肤工厂 */ object SummerSkinFactory extends SkinFactory { /** * 夏天皮肤按钮 */ class SummerButton extends Button { override def display(): Unit = println("summer button") } /** * 夏天皮肤文本框 */ class SummerTextField extends TextField { override def display(): Unit = println("summer textField") } /** * 复写方法,产生夏天皮肤按钮 * @return 按钮特质 */ override def createButton(): Button = new SummerButton /** * 复写方法,产生夏天皮肤文本框 * @return 文本框特质 */ override def createTextField(): TextField = new SummerTextField } package com.linewell.modeldesgin.abstractfactory /** * Created by ctao on 2015/8/8. * 测试客户端 */ object Client extends App{ /** * 构建皮肤工厂 */ val factory :SkinFactory = SpringSkinFactory /** * 按钮的展示方法 */ factory.createButton().display() /** * 文本框的方法 */ factory.createTextField().display() }
相关文章推荐
- [leedcode 229] Majority Element II
- JSF 入门教程
- 随机快排
- 总得写点什么吧
- 巧用array_map()和array_reduce()替代foreach循环
- Android控件详解之惰性装载控件
- 用友T6客户端点击系统管理admin.exe,一直无响应
- hdu-3416-Marriage Match IV-(求最小割)-网络流模板
- git基本命令
- js 中文乱码
- 大学生应对面试宝典(电话、现场面试)
- floyd算法(循环问题)
- iOS sdwebimage 特殊图片错误的问题
- HDU 1874 畅通工程续
- POJ 1789 ruck History
- ACM比赛
- scala实现抽象工厂
- Socket连接与HTTP连接
- 设置导航栏的背景色
- DZY Loves Chemistry