Nem, semmilyen *_ptr és semmilyen pointerezés nem kell. Ha mégis, azt elfedjük valamivel, elrejtjük valami osztályba, ami nem használható veszélyesen. És csak abból használunk példányokat kizárólag sima memberként vagy esetleg containerekben.
A lényeg, hogy az egész projectben ne legyen semmilyen manuálisan kezelt dinamikus memóriakezelés sehol se, azaz minden objektum tartozzon valahova.
Sajnos a factory és hasonló patterneken edződött programozóknak ezt nehéz még elképzelni is. A tapasztalatom, hogy ez szinte kizárólag a Java képzést nem nagyon kapott kezdőknek és a régi motoros C++-osoknak megy akik világ életükben beágyazott környezetbe írtak programokat, ahol alapkövetelmény az akár évtizedeken keresztüli hibátlan működés.