scala实现设计模式之装饰者模式
2015-08-16 19:54
316 查看
package com.linewell.modeldesgin.decorator /** * 抽象界面构件类 * Created by ctao on 2015/8/16. */ trait Component { def display(): Unit } /** * 窗口具体构件类 */ class Window extends Component { override def display(): Unit = println("显示窗口") } /** * 文本框具体构件类 */ class TextBox extends Component { override def display(): Unit = println("显示文本框") } /** * 列表具体构件类 */ class ListBox extends Component { override def display(): Unit = println("显示列表框") } /** * 构件装饰样例类 * @param component 抽象构件 */ case class ComponentDecorator(component: Component) extends Component { /** * 复写display方法,调用抽象构建的方法 */ override def display(): Unit = component.display() } /** * 滚动条装饰类 * @param component 抽象构件 */ class ScrollBarDecorator(component: Component) extends ComponentDecorator(component) { /** * 复写父类方法,在复写的方法中调用自己的独有方法 */ override def display() = { scrollBar() super.display() } /** * 自己独有方法 */ def scrollBar() = println("为构件增加滚动条") } /** * 黑色边框装饰类 * @param component 抽象构件 */ class BlackBorderDecorator(component: Component) extends ComponentDecorator(component) { override def display() = { blackBorder() super.display() } def blackBorder() = println("为构件增加黑色边框") }
package com.linewell.modeldesgin.decorator /** * 测试客户端 * Created by ctao on 2015/8/16. */ object Client extends App { /** * 窗口 */ val component: Component = new Window /** * 滚动条来装饰窗口 */ val componentSB: Component = new ScrollBarDecorator(component) /** * 黑色边框装饰滚动条装饰类 */ val componentBB: Component = new BlackBorderDecorator(componentSB) componentBB.display() }
相关文章推荐
- Android实战简易教程-第三十七枪(ListView中点击button跳转到拨号界面实例)
- struts_ognl详解
- web_reg_save_param在飞机订票中的例子
- 电子书下载网站整理
- <input value="hidden">的作用
- scala实现装饰者模式
- NOIP2010 关押罪犯 (二分答案+二分图染色)
- 火灾面前,机器人和无人机如何拯救人类?
- 适配器模式
- 自己动手写vector
- HNU 13411 Reverse a Road II(最大流+BFS)经典
- HDOJ 4324 Triangle LOVE(拓扑排序)
- Minimum Inversion Number
- Javaweb之 servlet 开发详解1
- Minimum Inversion Number
- 版本控制-cvs
- Javaweb之 servlet 开发详解1
- Android获取百度音乐下载音乐和歌词下载链接
- 谷歌走上“不归路”:Alphabet 究竟是什么?
- iOS 8_UIAlertController