단일 책임 원칙의 기본 정의에 따르면 A 클래스는 변경할 이유가 하나만 있어야 합니다. 더 나은 이해를 위해 이 진술을 분석해 보겠습니다.
우리가 전달하는 텍스트를 조작하는 클래스가 있다고 가정해 보겠습니다. 단일 책임 원칙에 따르면 우리가 만든 클래스는 텍스트 조작에 대해서만 책임을 져야 하며 클래스가 수행하는 다른 작업은 텍스트 조작의 일부가 되어서는 안 됩니다. 수업.
이러한 클래스의 예를 들어 어떻게 리팩터링할 수 있는지 살펴보겠습니다.
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); } }
위 코드에서 클래스가 인쇄 작업도 수행하고 있음을 알 수 있습니다. 이는 단일 책임 원칙을 위반합니다. 두 개의 새로운 클래스를 생성하여 코드를 리팩터링할 수 있습니다
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()); } }
리팩터링된 코드에는 별도의 작업을 수행하는 두 개의 별도 클래스가 있습니다.
단일 책임 원칙을 적용하면 다음을 달성할 수 있습니다.-
단일 책임 원칙을 구현하는 비결은 우리 클래스의 단일 책임이 무엇인지 아는 것입니다. 하지만 개발자마다 책임에 대한 비전이 있고, 구현 방법에 대한 지침이 없기 때문에 각자의 해석만 남습니다.
실제로 비즈니스 또는 아키텍처 관점에서 동일한 작업을 수행하는 두 클래스를 분리하는 경우가 있을 수 있습니다. 이렇게 하면 두 클래스가 서로 긴밀하게 결합되어 더 복잡한 코드가 생성될 수 있으므로 SOLID 원칙
의 유일한 목적이 줄어듭니다.새 클래스를 만들 때 지나치게 생각하지 않는 것이 핵심입니다
위 내용은 TypeScript의 단일 책임 원칙 이해: 빠른 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!