Попробуй на java сделать - есть несколько типов и несколько операций определенных на этих типа, ну например, целое число, строка и операции сложения и вычитания. Причем операции возможны целое число + строка.
Дизайн по ООП - класс - тип, методы - операции.
Затем попробуй добавить новый тип данных. В итоге, чтобы при добавлении тебе пришлось имплементить только 1 новый класс - вот там будет дабл диспатч 🙂