La tua soluzione mi piace in leggibilità e funzionalità.
Come la vedresti a mentenere soltanto la sintassi che identifica i protected e mantenere invece i costrutti nativi del linguaggio per i pubblici e i privati?
Perdersti in leggibilità ma risparmieresti in performance.
Ho aggiunto un benchmark al mio pattern su 10000 istanze, ma non so quanto sia in realtà falsato dal dispatcher di oggetti che ho fatto nel ns di test, che non ho rimosso per pigrizia.