TIL - 5장 구부러지거나 부러지거나

00_8_3·2022년 3월 26일
0

pragmatic-programmer

목록 보기
7/12

TIL

2022-03-27

오늘 읽은 범위

5장 구부러지거나 부러지거나 181 p ~ 241p

기억남는

  • 프로그래밍은 코드에 관한 것이지만, 프로그램은 데이터에 관한 것이다. - 210p
  • 타입을 정의하기 위해 상속을 쓸 때의 문제 - 227p

가벼운 소감

  • carbicyclevehicle의 종류로 상속을 받는다.
    문제는 car탈 것뿐만 아니라 asset insuredItem의 일종 일 수도 있기 때문에 다중상속이 필요하다. 이러한 문제 때문에 클래스 계층도는 우리의 도메인을 정확하게 모델링 할 수 없게 만든다.

제안하는 문제의 해결책으로는

  • 인터페이스
  • 위임
  • 믹스인과 트레이트

js에서의 믹스인

Wikipedia에선 믹스인(mixin)을 다른 클래스를 상속받을 필요 없이 이들 클래스에 구현되어있는 메서드를 담고 있는 클래스라고 정의합니다.

// 믹스인
let sayHiMixin = {
  sayHi() {
    alert(`Hello ${this.name}`);
  },
  sayBye() {
    alert(`Bye ${this.name}`);
  }
};

// 사용법:
class User {
  constructor(name) {
    this.name = name;
  }
}

// 메서드 복사
Object.assign(User.prototype, sayHiMixin);

// 이제 User가 인사를 할 수 있습니다.
new User("Dude").sayHi(); // Hello Dude!

참고: https://ko.javascript.info/mixins
https://www.typescriptlang.org/docs/handbook/mixins.html

0개의 댓글