Bob*_*orn 6 c# share behavior subclass
我有两个实现ISomeBehavior的类.现在我希望他们分享功能.通常我会用一个抽象类替换ISomeBehavior,比如SomeBehaviorBase.问题是其中一个子类已经从另一个类派生,而另一个类不是我们拥有的软件.(这是C#,因此多重继承不是一种选择.)从第三方类派生的子类没有实现.它只是派生自第三方类,并实现了ISomeBehavior,因此第三方类的处理方式与实现ISomeBehavior的其他子类相同.
我目前所做的是在ISomeBehavior上实现一个扩展方法.现在消费代码可以调用该方法.这种方法的问题是我想强制调用代码使用这个扩展方法.我无法从界面中删除SomeMethod(),因为扩展方法最终必须调用它.
关于如何让两个类优雅地分享相同的行为的任何想法,当其中一个已经派生自另一个,第三方,类?注意:策略设计模式在这里听起来很有意义,但是当子类之间的行为发生变化时会使用该模式.这里的行为没有变化; 它只需要分享.
是否有任何理由不能使用合成而不是委托来实现当前来自第三方类的类?只需将所有接口方法委托给第三方类的实例.这样,如果要添加功能,可以使用公共基类.
在对象标识相关的某些情况下,这不起作用,但在许多情况下,这是一个非常合理的设计.
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |