可以说我有一个类,需要一个委托:委托模式是否破坏封装?
public class DelegateContainer
{
private IDelegate delegate;
public DelegateContainer(IDelegate delegate)
{
this.delegate = delegate;
}
public void doSomething()
{
delegate.doSomethingOnlyForThisPurpose();
}
{
正如你可以看到委托的doSomethingOnlyForThisPurpose()方法只存在于由委托类调用。但是这个方法是公开的,并且可以由任何东西执行。如果它绝对不应该被它所附加的委托类之外的任何东西执行(特别是如果委托类传入一个依赖),那么这不会破坏封装吗?我认为解决这个问题的唯一方法是设计一个对象,该对象只能由传递给每个调用方法的委托类(内部类)实例化。然而,这是非常复杂的,而不是无论如何不水密。有没有办法解决这个问题还是病理性的?
注:我想坚持这种构图方法,所以我宁愿不诉诸继承。