scala实现观察者模式示例
2017-07-19 15:43
841 查看
一个主题抽象类,主题实现类,观察者抽象类,观察者实现类,和一个主入口
详细如下:
执行结果:
详细如下:
package cn.touna import scala.collection.mutable import scala.collection.mutable.{ArrayBuffer, ListBuffer} /** * User: lijie */ abstract class Subject { /** * 注册观察者 * * @param obs */ def registObserver(obs: Observer): Unit /** * 注销观察者 * * @param obs */ def removeObserver(obs: Observer): Unit /** * 通知观察者 */ def notifyObserver(name: String, age: Int): Unit } abstract class Observer { /** * 更新方法 * * @param name * @param age */ def update(name: String, age: Int): Unit } class SubjectImpl extends Subject { //注册中心 var list = new ListBuffer[Observer] /** * 注册观察者 * * @param obs */ override def registObserver(obs: Observer): Unit = { list += obs } /** * 注销观察者 * * @param obs */ override def removeObserver(obs: Observer): Unit = { list -= obs } /** * 通知观察者 */ override def notifyObserver(name: String, age: Int): Unit = { list.foreach(x => { x.update(name, age) }) } } class ObserverImpl(val sub: Subject, var name: String = null, var age: Int = 0) extends Observer { //构造函数调用 online /** * 观察者上线 */ def online(): Unit = { sub.registObserver(this) } /** * 观察者下线 * * @return */ def offline(): Unit = { sub.removeObserver(this) } /** * 更新方法 * * @param name * @param age */ override def update(name: String, age: Int): Unit = { this.name = name this.age = age showInfo } def showInfo(): Unit = { println(s"current name: $name , age: $age") } } /** * 主函数入口 */ object Obs { def main(args: Array[String]): Unit = { //创建主题 val subject = new SubjectImpl //创建观察者 val observer01 = new ObserverImpl(subject) val observer02 = new ObserverImpl(subject) subject.notifyObserver("zhangsan", 24) println("-------------------------") subject.notifyObserver("wangwu", 24) } }
执行结果:
相关文章推荐
- Java使用观察者模式实现气象局高温预警功能示例
- JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
- PHP使用标准库spl实现的观察者模式示例
- scala实现设计模式之观察者模式
- JavaScript原生实现观察者模式的示例
- PHP观察者模式原理与简单实现方法示例
- WCF中使用观察者模式实现事件通知
- PHP实现的观察者模式实例
- cocos2d-js 实现观察者模式
- 最简单的观察者模式纯JAVA实现
- 设计模式-观察者模式(Java实现)
- PHP简单装饰器模式实现与用法示例
- ZooKeeper学习笔记:使用zookeeper的API实现增删查改以及客户端的观察者模式
- scala实现设计模式之工厂方法模式
- scala实现设计模式之建造者模式
- Java 语言使用 Observer/Observable 实现简单的观察者模式
- Java 实现观察者(Observer)模式
- 利用观察者模式实现Cocos2DX-lua游戏中的消息管理系统
- 三种观察者模式的C#实现
- 利用Java提供的Observer接口和Observable类实现观察者模式