[设计模式](九):过滤器模式(Filter)及Kotlin的Filter模式

     过滤器模式(Filter)是常用的一种结构模式,也是最后一种常用的结构模式。由于其的常用,在kotlin中甚至被当做一种lambda函数简化。

>什么是过滤器模式?

     过滤器,是用来过滤一组特地的对象,筛选出符合目标的对象以供使用。

     让我们从一个例子讲起。

     在CS游戏中,CT和T能从商店买到的枪是不一样的,每次当有一个玩家打开商店时,就有一组过滤器过滤出他能买到的枪并显示。

     让我们看看用代码怎么实现:

enum class ArmsPermission{
    Both,OnlyCT,OnlyT // 枚举类,枚举类CT和T的购买权限
}
abstract class Weapon{
    abstract val permission:ArmsPermission // 武器的购买权限
}

class WeaponFactory{
    fun createAllWeapons():List<Weapon>{ // 一次性给出所有的武器
        var allweapons = mutableListOf<Weapon>()
        return allweapons
    }
}
//这是一个过滤器的抽象
interface PermissionFilter{
    fun filter(allWeapons:List<Weapon>):List<Weapon>
}
class CTPermissionFilter:PermissionFilter{ // CT的过滤器
    override fun filter(allWeapons: List&
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值