2016-06-21 5 views
0

То, что я подразумеваю под верхним уровнем, является объект, который создается в одном из верхних слоев программы (например, основная функция). Объект низкого уровня создается очень глубоко в коде других объектов.Как передать объект верхнего уровня на низкоуровневый?

Так скажем, моя основная функция выглядит следующим образом:

public static void Main(String[] args) 
{ 
    SomeClass topLevelObject = ... 
    SomeOtherClass otherTopLevelObject = ... 
} 

Теперь, давайте скажем, что otherTopLevelObject создает объект, который сам по себе создает другой объект, и так далее, чтобы объект, который мы называем lowLevelObject

Тогда что, если lowLevelObject необходимо topLevelObject? Каков хороший способ справиться с этим? Нужно ли передавать topLevelObject по дереву конструктора? Или, может быть, лучше избегать таких случаев. Если да, то как мне их избежать?

ответ

0

Обычно вы не хотите создавать зависимость в lowLevelObject на topLevelObject. Например, если lowLevelObject - это вещь, которая сохраняет данные на диск, а topLevelObject - это текущее состояние игры, вы, вероятно, не хотите, чтобы lowLevelObject должен был знать, как интерпретировать состояние игры. Вместо этого у вас должно быть topLevelObject возможность реализовать какой-либо интерфейс или метод, такой как Serialize, тогда все, что нужно сделать, - это знать, как обрабатывать сериализованные данные.

Таким образом, при создании нового SomeOtherClass2, который реализует регистрацию аварий, вам не нужно изменять lowLevelObject, чтобы теперь знать, как интерпретировать данные о сбоях. Просто внесите Serialize за SomeOtherClass2, который lowLevelObject уже знает, как бороться.

+0

Возможно, мне нужно быть более конкретным. У меня есть первый объект, который является окном Java swing; объект низкого уровня здесь - виджет внутри окна. Хитрость заключается в том, что самому окну и многим его членам нужен определенный второй объект. В любом случае спасибо за понимание –

Смежные вопросы