过滤器模式(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&