Здравствуйте, Аноним, Вы писали:
А>В книге рекомендут использовать паттерн Command.
1) Но у классического паттерна Command нет параметров вызова. То есть, как передать X,Y в метод SetPosition(X, Y)?
2) А как получить сам объект Command минуя несколько уровней агрегации?
3) Если использовать механизм сообщений (там можно будет параметры передавать), то скорость работы упадет. Хотелось бы эффективностью не жертвовать...
4) А еще хотелось бы кода поменьше писать для поддержки этого механизма.
А>Так весь смысл Composite, что-бы в коде писать Composite.Draw() или другой метод. А сама реализация уже в классе. Добавления еще одного объекта или дополнительной агрегации кода приложения не меняет.
Но ведь на разных уровнях агрегации (в подавляющем большинстве случаев, короче — всегда) находятся объекты разных типов. То есть у них нет общих методов, типа Draw() или ему подобных. Наверняка присутствующий у всех метод это метод SetAggregate(NewAggregate)...