2022-03-27
5장 구부러지거나 부러지거나 181 p ~ 241p
car
와 bicycle
은 vehicle
의 종류로 상속을 받는다.car
는 탈 것
뿐만 아니라 asset
insuredItem
의 일종 일 수도 있기 때문에 다중상속이 필요하다. 이러한 문제 때문에 클래스 계층도는 우리의 도메인을 정확하게 모델링 할 수 없게 만든다.제안하는 문제의 해결책으로는
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