Скажем, например, у вас есть метод, который просматривает коллекцию Object X и возвращает один на основе ключевого поля.
В другом месте вашего кода у вас есть другой метод, который просматривает коллекцию Object Y и возвращает единицу на основе ключевого поля.
Почему бы просто не создать общий c вспомогательный класс, в который можно передавать коллекцию объектов и ключевое поле? Вы разрабатываете этот помощник как общий c и применим в обоих случаях выше. Теперь у вас есть полезная утилита, которую можно использовать снова и снова в вашем коде.
В качестве альтернативы вы можете ввести абстрактный базовый класс как в класс X, так и в класс Y. Теперь они оба реализуют метод поиска, как определено в абстрактном базовом классе. Вызов поиска теперь имеет общий c и может использоваться во всем вашем коде. Найти в коллекции теперь является общим c в вашем коде.
Намерение состоит в том, чтобы распознавать повторяющиеся образцы поведения и обрабатывать их с помощью универсального кода c.
Это дает несколько преимуществ:
- Код более читабелен
- Изменения в поведении, которые распространяются по всему вашему коду, нужно делать только в одном месте
- Использование кода упрощено, так как общие операции выполняются одинаково.