私たちが知っているように、SRPはすべてのクラスが単一の責任を持つべきであり、その責任はクラスによって完全にカプセル化されなければならないことを述べています。
しかし、セッターとゲッターは別の責任を果たします -それらは抽象クラスのプロパティ(データ)アクセスを行います。
場合セッターとゲッターは、抽象クラスのプロパティへのアクセスを行う、その後、彼らは別の責任を果たす行います。
だから私がこのようなものを持っているなら、
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()
{
...
}
}
私はSRPを壊します。問題は、それがクラスが存在する唯一の方法であることです。
だから問題は、
私の状況では、CRUD setFileLocation()
をgetFileLocation()
使用する方法を回避することはほとんど不可能です。
したがって、CRUDメソッドとデータアクセス抽象化を組み合わせることにより、SRPを壊す場合、
SRPを遵守し、同時にConfigクラスの共通の概念(CRUD操作)を維持する方法はありますか?