2013-11-07 3 views
0

Я довольно долго недоумевал об этом. (Простите меня, я новичок) Есть ли хороший шаблон дизайна, где экземпляры классов взаимодействуют вместе без вмешательства суперкласса или, по крайней мере, на минимальном уровне? Я хотел бы создать экземпляры, которые полностью независимы. Но для того, чтобы взаимодействовать с другими, они должны иметь представление об окружающем мире. У меня такое чувство, что должен быть элегантный способ прямого доступа к методам других случаев .. или? Проще говоря: мне нужна ситуация, когда мой класс среды создает мои экземпляры, а затем вызывает interactive().Экземпляры экземпляров, работающих вместе напрямую

+2

Вам действительно нужно задать более конкретный вопрос. Взаимодействовать как? Вы посмотрели на Spring Framework? Он имеет множество механизмов, которые объединяют независимые классы, используя аннотацию и отражение. –

+0

Спасибо, я обязательно проверю это. «взаимодействие» может быть чем угодно, подумайте: монстры в игре, каждая из которых обладает уникальным поведением. Соединяясь и не говоря уже об этом, возникает цепная реакция, приводящая к кровавому беспорядку. – Leto

+0

Просто наткнулся на шаблон дизайна медиатора, который, кажется, является предпочтительным способом настройки. Я предполагаю, что по определению в ООП нет никакого способа, чтобы «коллеги» обменивались информацией напрямую. Я прав? – Leto

ответ

1

Композиция - это то, что вам нужно, как и вы. Постарайтесь максимально упростить связь, чтобы поддерживать строго объектно-ориентированный подход.

0

Я не совсем понимаю ваш вопрос. Но посмотрите на эти строки кода:

Environment env = new Environment(); 
env.interact(); 

Или:

EnvironmentInteracter envInt = new EnvironmentInteracter(env); 
envInt.makeInteractionHappen(); 

Где

public class EnvironmentInteracter 
{ 

    private Environment env; 
    public EnvironmentInteracter(Environment env) { this.env = env; } 

    public void makeInteractionHappen() 
    { 
      env.interact(); 
    } 
} 
+0

Похоже на то, что меня перекладывает проблема. В этом случае нам еще нужен класс «агент» (EnvironmentInteracter), чтобы вести процесс взаимодействия, не согласны ли вы? – Leto

+0

Да, мой пример слабый. Но это дает вам представление о том, как работать с несколькими классами вместе. –

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