Come sappiamo, l'SRP afferma che ogni classe dovrebbe avere un'unica responsabilità e che la responsabilità deve essere interamente incapsulata dal classe.
Ma setters e getter hanno un'altra responsabilità - fanno un accesso astratto alla proprietà di classe (dati).
se Setter e getters fanno un accesso astratto alle proprietà di classe, allora hanno un'altra responsabilità .
Quindi se ho qualcosa di simile,
class Config
{
private location;
public function write(array $data)
{
....
}
public function read($key)
{
...
}
public function exists($key)
{
...
}
public function delete($key)
{
...
}
// Below comes property abstraction
// Here I doubt - I CANNOT USE this class without them
// but they seem to break the SRP at the same time!?
public function setFileLocation($location)
{
$this->location = $location;
}
public function getFileLocation()
{
return $this->location;
}
public function setConfigArray(...)
{
...
}
public function getConfigArray()
{
...
}
}
Rompere l'SRP. Il problema è che, questo è l'unico modo in cui la classe può esistere.
Quindi la domanda è,
Nella mia situazione, è quasi impossibile evitare i metodi setFileLocation()
e getFileLocation()
con quelli CRUD.
Quindi, se combinando i metodi CRUD con l'astrazione dell'accesso ai dati, interrompo l'SRP,
C'è un modo in cui posso aderire all'SRP e mantenere il concetto comune della classe Config (operazioni CRUD) allo stesso tempo?