可以說我有一個類,需要一個委託:委託模式是否破壞封裝?
public class DelegateContainer
{
private IDelegate delegate;
public DelegateContainer(IDelegate delegate)
{
this.delegate = delegate;
}
public void doSomething()
{
delegate.doSomethingOnlyForThisPurpose();
}
{
正如你可以看到委託的doSomethingOnlyForThisPurpose()方法只存在於由委託類調用。但是這個方法是公開的,並且可以由任何東西執行。如果它絕對不應該被它所附加的委託類之外的任何東西執行(特別是如果委託類傳入一個依賴),那麼這不會破壞封裝嗎?我認爲解決這個問題的唯一方法是設計一個對象,該對象只能由傳遞給每個調用方法的委託類(內部類)實例化。然而,這是非常複雜的,而不是無論如何不水密。有沒有辦法解決這個問題還是病理性的?
注:我想堅持這種構圖方法,所以我寧願不訴諸繼承。