単一責任の原則について読んだばかりですが、ある時点で、Robert C. Martinは、クラスに複数の責任があることを確認するのは難しい場合があると述べています。
誰かがそのようなクラスの例を提供できますか?
単一責任の原則について読んだばかりですが、ある時点で、Robert C. Martinは、クラスに複数の責任があることを確認するのは難しい場合があると述べています。
誰かがそのようなクラスの例を提供できますか?
メソッドを持つHTTPクラスを考えてみましょう
これらの方法は両方ともHTTPと関係があります。ただし、GetとSendRequestの抽象化レベルは異なります。Getは、実際にはSendRequestを使用してGETリクエストを送信する場合があります。したがって、SendRequestは低レベルのHTTPクラスにあり、Getは低レベルのHTTPクラスを使用する高レベルのHTTPクラスにある必要があります。
別のStackOverflowユーザーが数時間前にそのような例を質問で示しているので、面白いです。
このクラスを検討してください。
[Serializable]
class MyClass
{
//Serializable fields
public void Save()
{
//Saving data into file
}
public void Load()
{
//Loading data from file
}
}
このクラス(MyClass)には、いくつかの個別の役割があります。
このクラスはシリアル化可能です
このクラスは、彼の状態をいくつかのストレージに保存できます
多くの場合、永続ストレージを単純なバイナリファイルからXmlファイル、またはリモートストレージ(たとえばWCF経由)に変更する場合、このシリアル化可能なエンティティを簡単に再利用できないため、これはお勧めできません。
MyClassWCFSaverのようなサブクラスを作成することもできますが、この場合でも、シリアル化可能なクラスMyClassとMyClassSaversの独立した階層(xml、バイナリ、またはWCFストレージ用のいくつかの異なるサブクラスを使用)を使用する方がはるかに簡単です。
ところで、そのため、多くのORMでは、エンティティをリポジトリから区別することがよくあります(リポジトリパターンを参照)。