[设计模式](十一):观察者模式|迭代器模式|责任链模式|命令模式(四种类间行为模式)

    在《[设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍》中我们对11种行为模式进行了分类,并介绍了的父子关系类中的策略模式模板模式

    今天讲讲四种类间关系类的行为模式:观察者模式迭代器模式责任链模式命令模式

>什么是观察者模式

    观察者模式定义了一种一对多的依赖关系,当被观察对象状态改变时,所有观察者都能收到信息。(又被称为发布-订阅模式)

    先上一个UML图,然后由实例引出具体的实现:


     在玩CS游戏时,如果一个玩家被击杀,在积分榜单和右上角都会有提示和记录。这是怎么做到的呢?看下面这个代码:

abstract class Roles{//被观察者
    val scoreBorads:MutableList<Borad> = mutableListOf()//观察者的列表
    abstract val name:String
    abstract fun registerObserver(borad:Borad)//注册一个该对象的观察者
    abstract fun removeObserver(borad:Borad)//移除一个该对象的观察者
    abstract fun notifyObserver()//一旦自身状态改变,通知观察者
}
abstract class Borad(){//观察者
    abstract fun update(r:Roles)//观察者更新数据
}
//以上两个类的具体实现类
class CT(n:String):Roles(){
    override val name = n
    override fun registerObserver(borad:Borad) {
        scoreBorads.add(borad)
    }
    override fun removeObserver(borad:Borad) {
        scoreBorads.remove(borad)
    }
    override fun notifyObserver() {
        scoreBorads.forEach { it.update(this) }
    }
    fun getKill(){//若该玩家被击杀
        notifyObserver()//通知所有的观察者
    }
}
c
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值