객체지향에서의 5개의 원칙을 나타냄 소프트웨어 설계와 아키텍처의 품질을 향상시키는 데 도움이 되고, 유지보수가 쉽고, 확장 가능한 시스템을 위한 지침을 제공
//하나의 클래스에 하나의 책임
class User {
constructor(name, age){
this.name = name;
this.age = age;
}
//사용자의 정보
getUserInfo() {
return `${this.name}, ${this.age}`;
}
}
//좋지 않은 예시!
class UserAndOrder{
//사용자 정보 메서드
//주문 정보 메서드
}
class Shape {
area() {
throw new Error("이 메서드는 오버라이딩 되어야합니다.");
}
}
//좋은 예시 - 확장
class Square extends Shape{
constructor(length){
super();
this.length = length;
}
area(){
return Math.pow(this.length,2);
}
}
//상속 X - 나쁜 예제
class Circle {
constructor(rad){
this.radius =rad;
}
area(){
return Math.PI * Math.pos(this.radius,2);
}
}
class Bird {
fly(){
//날기
}
}
class Sparrow extends Bird{
fly(){
//참새가 난다.
}
}
interface IInterface1 {
//언터페이스1
}
interface IInterfcae2 {
//인터페이스2
}
//좋은예시
class Database{
constructor(pool){
this.pool = pool;
}
save(data){
this.pool.save(data);
}
}
class MongoDB{
save(data){
//실행
}
}
//나쁜예시
class Database{
save(data){
//바로 mongoDB 연결
}
}