단일 책임 원칙 - Javascript의 SOLID 원칙
SOLID 디자인 원칙은 무엇입니까?
SOLID는 이해하기 쉽고 유지 관리 가능한 코드를 작성할 수 있도록 하는 일련의 객체 지향 설계 원칙입니다. 코드의 한 부분을 변경해도 다른 부분에 영향을 미치지 않도록 합니다. SOLID는 5가지 주요 설계 원칙의 약어입니다.
이 시리즈에서는 이 5가지 원칙을 모두 다룰 것입니다. 이 기사의 첫 번째 항목을 다룰 것입니다.
단일 책임 원칙
단일 책임 원칙(Single Responsibility Principle)은 클래스가 하나의 책임만 가져야 한다는 것은 변경해야 할 이유가 하나만 있어야 함을 의미합니다. 즉, 하나의 작업만 있어야 합니다.
클래스에 여러 책임이 있는 경우 단일 책임을 위반하지 않도록 여러 클래스로 분할하는 것이 좋습니다.
예시
학생과 코스를 관리하는 애플리케이션을 구축하고 있다고 가정해 보겠습니다.
순진한 솔루션
다음과 같은 클래스가 있을 수 있습니다.
class Student {
constructor(name) {
this.name = name;
this.courses = [];
}
enrollCourse(course) {
this.courses.push(course);
this.notify(course);
}
notify(course) {
console.log(`${this.name}, you have successfully enrolled ${course}.`);
}
}
const Shahmir = new Student("Shahmir");
Shahmir.enrollCourse("Physics");
// Output
// Shahmir, you have successfully enrolled Physics.
여기에는 2개의 속성, 학생의 이름 및 코스가 있습니다. 그런 다음 과정을 추가하기 위한 함수 registeredCourse가 해당 과정에 대해 학생에게 알리기 위해 알림 기능을 사용합니다.
이제 해결책이 좋아 보이지 않습니까? 그러나 단일 책임 원칙을 위반하고 있습니다.
단일 책임을 위반하는 이유는 무엇입니까?
위의 예를 주의 깊게 살펴보면 두 가지 책임이 있습니다.
클래스를 변경해야 하는 두 가지 이유가 있습니다.
알림 기능의 문제점은 다음과 같습니다.
더 나은 솔루션
왜 그 기능을 클래스에서 빼지 않습니까? 이렇게 하면 클래스가 단일 책임 원칙을 사용하고 원하는 곳 어디에서나 해당 기능을 사용할 수 있습니다. 그리고 변경을 원할 때마다 다른 부분에 영향을 주지 않고 코드의 한 부분만 변경합니다.
function notify(message) {
console.log(message);
// we can also email or send a push notification
}
class Student {
constructor(name) {
this.name = name;
this.courses = [];
}
enrollCourse(course) {
this.courses.push(course);
notify(`${this.name}, you have successfully enrolled ${course}.`);
}
}
const Shahmir = new Student("Shahmir");
Shahmir.enrollCourse("Physics");
// Output
// Shahmir, you have successfully enrolled Physics.
이제 수업에는 단 하나의 책임이 있으며 그것은 과정을 등록하는 것입니다. 알림 기능은 클래스와 별개입니다.
그게 다야. 개방 폐쇄 원칙을 다루는 다음 기사에서 뵙겠습니다.
나를 팔로우하세요:
Github
Reference
이 문제에 관하여(단일 책임 원칙 - Javascript의 SOLID 원칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shahmir049/single-responsibility-principle-solid-principles-in-javascript-3k63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)