Innanzitutto grazie per la risposta.
Allora questa classe crea solo un oggetto, ad ogni nuovo record l'id viene incrementato (ogni id del record va da 0...n).
se serve una particolare istanza non è molto difficile basta specificare l'd (con tutta una logica del framework Joomla).
il problema è che, per ricavare questi record possono essere chiamati sia per id(intero) che per codice(stringa).
supponiamo:
prodotto 1 (id: 1, nome, marca, codice="111a")
prodotto 2 (id: 2, nome, marca, codice="222b")
con il metodo getInstance se in input riceve come parametro il codice="222b" e questo record in precedenza è stato già caricato non deve fare altro che restituire l'istanza associato al l'id precedentemente caricato (ovvero istanza di id 2) altrimenti fa una query per recuperare l'istanza di un singolo record.
Spero che si è capito l'utilità.