пример не очень удачный с encrypt/decrypt
если рассмотреть пример с человеком, который и девелопер и qa, то интерфес девелопера и интерфейс qa можно реализовать в двух разных классах (т.е. это будут два разных человека)
и в зависимости клиентского кода ты можешь передавать только интерфейс qa, если тебе в этом клиенте требуется, чтобы человек только протестировал что-то (а не разрабатывал)