getClass или Enum для зависимого от типа поведения - PullRequest
1 голос
/ 29 ноября 2010

Скажем, у меня есть метод, который обрабатывает входящие объекты данных. Он должен обрабатывать каждый тип данных по-разному. Дается выбор двух методов подписи:

void sendObjects(ObjectType enum, Collection<SendableObject> objects) где enum обозначает тип объектов в коллекции, и каждый объект имеет метод ObjectType getType(),

и

void sendObjects(Collection<SendableObject> objects), где getClass() используется для определения типа.

Какой подход лучше и почему? Недавно мы обсуждали это в моей компании, и мне любопытно узнать, что думает сообщество.

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Перечисление ничего не добавляет.На самом деле это может быть ошибочным, так как вызывающий может все перепутать.Я бы пошел с проверкой класса или ObjectType getType() для каждого объекта, но не отправлял бы перечисление в качестве аргумента.

0 голосов
/ 29 ноября 2010

Попробуйте посетитель шаблон.

...