프로그래밍 일반/객체 지향
Mixin 이란?
지노윈
2019. 11. 3. 13:00
반응형
자신을 템플릿 인자로 하여 원하는 클래스들을 재조립하여 새로운 클래스 타입을 만들어요.
즉, 각각의 기능을 컴포넌트 처럼 구현하고 원하는 기능들을 조합하여 새로운 타입을 만들 수 있어요.
상속을 이용하면 원하지 않는 기능도 함께 포함되지만 Mixin을 이용하면 재활용성 높고 깔끔한 구조로 구현할 수 있어요.
아래의 예제 코드를 살표 보면 무슨 말인지 이해가 될거예요.
Mixin으로 재조립하여 새로운 AnimatedWindow, ScrollableWindow, PerfectWindow라는 새로운 타입을 만들어서 사용하고 있어요.
struct Window
{
...
};
template<class Base> struct Animated : public Base
{
void Play() {};
};
template<class Base> struct Scrollable : public Base
{
void ScrollUp() {};
void ScrollDown() {};
};
template<class Base> struct Dockable: public Base
{
void Dock() {};
void Undock() {};
};
using AnimatedWindow = Animated<Window>;
using ScrollableWindow = Scrollable<Window>;
using PerfectWindow = Dockable<Scrollable<Animated<Window>>>;
int main()
{
AnimatedWindow aw;
aw.Play();
PerfectWindow pw;
pw.Dock();
pw.ScrollUp();
pw.Play();
}