Wie wir wissen, besagt die SRP, dass jede Klasse eine einzige Verantwortung haben sollte und dass die Verantwortung vollständig von der Klasse gekapselt werden muss.
Aber Getter und Setter tun eine andere Verantwortung dienen - sie tun abstrakte Klasse Eigenschaft (Daten) Zugang.
Wenn Setter und Getter auf abstrakte Klasseneigenschaften zugreifen, dienen sie einer anderen Verantwortung .
Also, wenn ich so etwas habe,
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()
{
...
}
}
Ich breche die SRP. Das Problem ist, dass nur so eine Klasse existieren kann.
Die Frage ist also:
In meiner Situation ist es fast unmöglich zu vermeiden setFileLocation()
und getFileLocation()
mit CRUD diejenigen Methoden.
Wenn ich also durch die Kombination von CRUD-Methoden mit der Datenzugriffsabstraktion die SRP unterbreche,
Gibt es eine Möglichkeit, die SRP einzuhalten und gleichzeitig das gemeinsame Konzept der Config-Klasse (CRUD-Operationen) beizubehalten?