Впервые я помню, как испытывал то, что вы называете «помощниками классов», во время изучения Objective C. Какао (платформа Apple Objective C) использует так называемые «Категории».
Категория позволяет расширять существующий класс, добавляя свои собственные методы без создания подклассов. На самом деле какао призывает вас избегать подклассов, когда это возможно. Часто имеет смысл создавать подклассы, но часто этого можно избежать, используя категории.
Хорошим примером использования категории в Какао является то, что называется «Код значения ключа (KVC)» и «Наблюдение значения ключа (KVO)».
Эта система реализована с использованием двух категорий (NSKeyValueCoding и NSKeyValueObserving). Эти категории определяют и реализуют методы, которые могут быть добавлены в любой класс, который вы хотите. Например, Какао добавляет «соответствие» в KVC / KVO, используя эти категории для добавления методов к NSArray, таких как:
- (id)valueForKey:(NSString *)key
Класс NSArray не имеет ни объявления, ни реализации этого метода. Тем не менее, за счет использования категории. Вы можете вызвать этот метод в любом классе NSArray. Вы не обязаны создавать подкласс NSArray для соответствия KVC / KVO.
NSArray *myArray = [NSArray array]; // Make a new empty array
id myValue = [myArray valueForKey:@"name"]; // Call a method defined in the category
Использование этой техники облегчает добавление поддержки KVC / KVO в ваши собственные классы. Интерфейсы Java позволяют добавлять объявления методов, а категории позволяют также добавлять фактические реализации в существующие классы.