这两个看起来都像黑客,有更好的方法吗?如果不是一个优先于另一个?两种方式都可以工作,但似乎都不是特别干净,一种方法是使用无用的方法存根来污染基类,另一种方法是使用显式类型检查,这通常被认为是一个坏主意.
这是一个清楚我的意思的例子:
public class Weapon{ // Should there be an empty StartCharging() here? public virtual voID Fire() { // Do something }}public class ChargeDWeapon : Weapon{ public voID StartCharging() { // Do something } public overrIDe voID Fire() { // Do something base.Fire(); }}public class Game{ private Weapon weapon; public voID HandleUserinput() { if (Mousebutton.Waspressed()) { // Or should there be an if (weapon is ChargeDWeapon) here weapon.StartCharging(); } else if (Mousebutton.WasReleased()) { weapon.Fire(); } }}解决方法@H_419_19@ 最好将方法添加到基类而不是进行类型检查.如果你做了一个类型检查,然后决定实施一种还需要充电的新型武器,会发生什么?你会增加另一个测试条件吗?
编辑:在你的代码中,我看到Strategy Pattern的实现的开始.我想你的用例将从它和State Pattern获得很大的好处.如果你需要更多关于这些的详细信息,请留下评论(因为它们有点偏离最初的问题的观点)
总结以上是内存溢出为你收集整理的c# – 基类和显式类型检查的空方法全部内容,希望文章能够帮你解决c# – 基类和显式类型检查的空方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)