AttackCardHandler不应该处理其他技能的相关细节，保证能让其他技能实现的时候不至于抓瞎就可以了。
因为其他技能有”和目标相关“的需求就在AttackCardHandler里实现是不科学的。
另外，即使一定要在这里实现，is_valid这个名字起得也不好，很容易跟Action的is_valid混淆（比如叫can_freeattack之类的就好的多）。

总之还是保持简单吧。现在的实现又是多余的技能，又是专门的子系统。一个tag能解决的问题。这是over engineering了。

本来用OO的意思是希望代码能跟规则什么的对应起来，让代码看起来*像说明规则的DSL一样*，现在背道而驰了。