Я пытаюсь создать класс ActionScript 3, который реализует два интерфейса. Интерфейсы содержат функции-члены с разными подписями, но то же самое название:Конфликты имен членов интерфейса в ActionScript 3
public interface IFoo
{
function doStuff(input:int):void;
}
public interface IBar
{
function doStuff(input1:String, input2:Number):void;
}
public class FooBar implements IFoo, IBar
{
// ???
}
В C# (например), это не является проблемой, так как методы могут быть перегружены, но ActionScript не поддерживает перегрузку. Есть ли способ создать класс, который реализует оба интерфейса?
Я боялся, что это так, но спасибо за ясный ответ. Не могли бы вы рассказать о том, что вы имеете в виду, используя «составной шаблон»? Вы имеете в виду создание двух классов, по одному для каждого интерфейса, а затем позволяя им общаться или делиться каким-то образом? – Aaron
Да, все. Чтобы облегчить связь, я бы предположил, что вы позволили агрегирующему классу обрабатывать сообщение. –
Боюсь, что мой последний комментарий, возможно, был неясным. Я имею в виду, что если у вас есть два отдельных класса, по одному для каждого интерфейса, вы можете обернуть их в класс агрегатов, который хранит ссылки на экземпляры этих классов и облегчает любую связь между ними. Любые данные реализации могут быть разделены, если необходимо, с использованием внутреннего пространства имен (если они находятся в одном пакете) или с помощью пользовательских пространств имен. Это было бы похоже на класс друзей. Это, конечно, не идеально, но это что-то по крайней мере. –