Il caricamento pigro può portare a dati stantii, viola il CIO?
https://softwareengineering.stackexchange.com/questions/156944
Domanda
Cercando di essere un programmatore migliore
Ho un'applicazione che tiene traccia di ruoli e autorizzazioni, avevo lezioni per il ruolo e il permesso che erano solo oggetti di valore.
class Role
{
int RoleID
string RoleName
}
class Permission
{
int PermissionID
string PermissionName
}
Se volessi ottenere le autorizzazioni per un ruolo che farei
List<Permission> permissions = PermissionDAL.GetPermissions(RoleID)
Ma per comodità (è un'applicazione desktop) ho dovuto spostare la raccolta di autorizzazioni alla classe di ruolo in modo da poterlo fare
permissions = roleInstance.GetPermissions();
E la classe di ruolo diventa
class Role
{
List<Permission> permissions = null;
int RoleID
string RoleName
public List<Permission> Permissions
{
get
{
if(permissions == null)
permissions = PermissionDAL.GetPermissions(this.RoleID);
return permissions;
}
}
}
Domanda 1: The Challenge - Ecco lo scenario
Role r = getARole();
//for user to see
display(r.Permissions);
//user adding permission to role
RoleDAL.AddPermission(RoleID, PermissionID);
//display new permissions
display(r.Permissions);
//But no, data is not refreshed because of the null check.
//Do I need to call a new instance of this Role?
Domanda 2 : Penso che questo violi l'inversione del controllo?
Domanda 3 : Come faresti un CIO per List<Role>
, Impostazione delle autorizzazioni per ciascun ruolo nella raccolta, se si dovesse usare il CIO.
Grazie
Nessuna soluzione corretta