public interface Component{}
public class AppManager {
public void doWork(){
SomeComponent comp = new SomeComponent ();
AddComponentToList(comp);
}
public void AddComponentToList(Component compo){
componentList.add(compo);
}
/* Give me the component I want. */
public Component getComponent(Component comp){
for (Component component : getComponentList()) {
if (component instanceof comp) {
return component;
}
}
}
private ArrayList<Component> componentList = new ArrayList<Component>();
}
public class SomeComponent implements component {
public void MyMethod() {
appManager.getComponent(SomeComponent );
}
public void setAppMnger(AppManager appm){
this.appManager = appm;
}
private AppManager appManager ;
}
В приведенном выше коде AppMnger имеет список компонентов. Компоненты взаимодействуют друг с другом. Поэтому, если один компонент хочет узнать экземпляр другого компонента, он вызывает метод AppMnger getComponent(comp). Но я получаю сообщение об ошибке, когда использую оператор instanceof. Я не хочу, чтобы каждый компонент хотел сравнить список, но я хочу делегировать эту задачу AppMnger, потому что он тот, кто знает о созданных им компонентах. Эми подумала?
component
иcomp
, например, имеют ли они один и тот же класс?, или какой-либо интерфейс, который они оба реализуют?, или они оба реализуют какой-либо из этого набора интерфейсов? . На все эти вопросы можно было бы ответить, учитывая две ссылки. Можете быть более конкретными? - person Patricia Shanahan   schedule 19.09.2013