Ora è tutto chiaro. Ad esempio il client ha la possibilità di poter scegliere da un factory degli algoritmi di ordinamento per poi utilizzarli.
Utilizzando un approccio OOP Abstract Factory potrebbe avere una situazione del genere:
SortFactory sf = new SortFactory();
SortAlgorithm sa = sf.create(mergeSort);
sa.sort(array);
In questo modo il client non conoscerà mai le implementazioni degli algoritmi di ordinamento e neppure se in futuro verranno modificati.
Questo approccio OOP è utile anche per questioni di sicurezza??