Como sabemos, el SRP establece que cada clase debe tener una responsabilidad única y que la responsabilidad debe estar totalmente encapsulada por la clase.
Pero los establecedores y captadores tienen otra responsabilidad : hacen un acceso de propiedad de clase abstracta (datos).
si los Setters y getters tienen acceso a la propiedad de clase abstracta, entonces tienen otra responsabilidad .
Entonces, si tengo algo como esto,
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()
{
...
}
}
Rompo el SRP. El problema es que esa es la única forma en que la clase puede existir.
Entonces la pregunta es,
En mi situación, es casi imposible de evitar setFileLocation()
y los getFileLocation()
métodos con CRUD.
Entonces, si combinando métodos CRUD con abstracción de acceso a datos, rompo el SRP,
¿Hay alguna forma de adherir el SRP y mantener el concepto común de la clase Config (operaciones CRUD) al mismo tiempo?