У меня есть абстрактный класс
abstract class Parent
{
private static AtomicLong nextId = new AtomicLong(0);
private long id=nextId.incrementAndGet(); // unique object id
private long in_id=0;
private long out_id=0;
protected long GetInId(){return this.in_id;}
protected long GetOutId(){return this.out_id;}
protected void SetInId(long in_id){this.in_id=in_id;} //left index
protected void SetOutId(long out_id){this.out_id=out_id;} //right index
}
Есть класс унаследованный от Parent
Каждый экземпляр класса унаследованного от Parent
, имеет уникальный идентификатор
Переменные in_id
и out_id
нужны для того чтобы можно было связать между собой несколько объектов в "цепочку", (в дальнейшем нужно для определения порядка вызова некоторых методов этих объектов). Однако появилась проблема, для некоторых объектов in_id и out_id могут быть массивами, я назову дальше эти объекты "нестандартными"
В классе Parent есть много методов, которые нужны в этих нестандартных объектах и было бы логично унаследоваться от него, однако это не даст мне возможности сделать in_id и out_id массивами. Я вижу несколько вариантов решения данной проблемы:
ParentSingleValue, ParentArrayValue
в них определить методы GetInId() и GetOutId(), чтобы они возвращали long и long[] соответственно и наследоваться их нужными классами4 решение мне кажется наиболее логичным, т.к. я храню все объекты в HashMap и при работе с объектами из этой Map я могу описать разное поведение по (... instanseof ParentSingleValue)
и по (... instanseof ParentArrayValue)
3 вариант мне не очень нравится т.к. он дает мне возможность узнать реализует ли объект интерфейс, но мне придется писать избыточный код реализации GetInId() и GetOutId() в каждом классе.
Может быть есть какие то еще варианты решения данной задачи, или в целом замечания по архитектуре? Возможно есть способы связывания объектов между собой без использования лишних полей, таких как in_id и out_id?
Язык Java.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вообщем на компьютере запускается серверК нему должен подключатся клиент с телефона через socket
Есть MVC проект с использованием FreemarkerСтоит задача перевести на микросервисы