単一責任原則の主な定義では、クラスが変更する理由は 1 つだけである必要があると述べています。より深く理解するために、このステートメントを分解してみましょう。
渡したテキストを操作するクラスがあるとします。単一責任原則では、作成するクラスはテキストの操作のみを担当し、そのクラスが実行するその他のアクションはクラスの一部であるべきではないとします。クラス。
そのようなクラスの例をとり、それをどのようにリファクタリングできるかを見てみましょう:
class TextManipulator { text: string; constructor(text: string) { this.text = text; } appendText(newText: string) { return this.text.concat(newText); } findAndReplace(word: string, replacementWord: string) { if (this.text.includes(word)) { this.text.replace(word, replacementWord); } return this.text; } printText() { console.log("The text is ", this.text); } }
上記のコードでは、クラスが print アクションも実行していることがわかります。これは単一責任の原則を破ります。 2 つの新しいクラスを作成することでコードをリファクタリングできます
class TextManipulator { private text: string; constructor(text: string) { this.text = text; } appendText(newText: string) { return this.text.concat(newText); } findAndReplace(word: string, replacementWord: string) { if (this.text.includes(word)) { this.text.replace(word, replacementWord); } return this.text; } getText() { return this.text; } } class PrintText { formattedText: TextManipulator; constructor(formattedText: TextManipulator) { this.formattedText = formattedText; } printText() { console.log("The text is ", this.formattedText.getText()); } }
リファクタリングされたコードには、別々のアクションを実行する 2 つの別々のクラスがあります。
単一責任原則を導入すると、次のことを達成できます:-
単一責任の原則を実装するコツは、クラスの単一責任が何であるかを知ることです。ただし、すべての開発者はクラスの責任について独自のビジョンを持っており、実装方法に関する指示がないため、独自の解釈しか残されていません。
ビジネスまたはアーキテクチャの観点から、実際には同じことを行っている 2 つのクラスを分離する場合が考えられます。これにより、両方のクラスが互いに密結合した、より複雑なコードが作成される可能性があるため、SOLID原則
の唯一の目的が減退してしまいます。新しいクラスを作成するときに重要なのは、考えすぎないことです
以上がTypeScript の単一責任原則を理解する: クイックガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。