mixin

dbscks1239·2021년 12월 20일
0

dart language

목록 보기
12/12
post-thumbnail

플러터 공식문서에 따르면, mixin은 여러 클래스 계층에서 코드를 재사용하는 방법이라고 나와있다. 또한, mixin은 with 키워드를 통해 사용한다. https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins

클래스는 다른 클래스를 상속받음으로써 상속받은 클래스의 코드를 재사용 할수있다.

하지만 아래처럼, 클래스는 단일클래스 상속만 가능하다는 특징이 있다.

void main() {
FlyingHuman().run();
}  // 실행결과 : running

class Run {
  
  void run(){
    print('running');
  }
  
}

class Fly {
  
  void fly(){
    print('flying');
  }
  
}

class FlyingHuman extends Run{
}

mixin을 사용한다면 여러 클래스를 상속할 수 있다. 따라서 여러 클래스로부터 코드 재사용이 가능하다.

void main() {
FlyingHuman().move();
}  /* 실행결과 : flying
                running
*/
mixin Run {
  
  void run(){
    print('running');
  }
  
}

mixin Fly {
  
  void fly(){
    print('flying');
  }
  
}

class FlyingHuman with Run,Fly{
  
  void move(){
    fly();
    run();
  }
  
}

대규모 프로그램에서 mixin의 유용성

mixin은 특히, 기능을 공유하는 클래스가 많은 대규모 프로그램에서 유용하다. A라는 클래스가 부모클래스의 B라는 메소드를 재정의 해야할때,
mixin을 사용한다면 필요한 메소드를 가지는 클래스를 단지 with로 추가하면 된다.
즉, 공유할 기능들을 mixin으로 정의해 놓으면 유지관리가 매우 수월할것이다.

profile
Flutter 학습 일기

0개의 댓글