假设我有一个接受委托的类:
public class DelegateContainer
{
private IDelegate delegate;
public DelegateContainer(IDelegate delegate)
{
this.delegate = delegate;
}
public void doSomething()
{
delegate.doSomethingOnlyForThisPurpose();
}
{
如您所见,委托的 doSomethingOnlyForThisPurpose() 方法仅存在以由委托类调用。但是,要求此方法是公共的,并且可以由任何东西执行。如果它绝对不应该由它所附加的委托类以外的任何东西执行(特别是如果委托类传递了依赖项),那么这不会破坏封装吗?我想解决这个问题的唯一方法是设计一个只能由传递给每个调用方法的委托类(内部类)实例化的对象。但是,这非常复杂,而且无论如何都不是水密的。有什么办法可以解决这个问题还是病态?
注意:我想坚持这种组合方法,所以我宁愿不求助于继承。