์๋
ํ์ธ์ Foma๐ ์
๋๋ค!
Dart์ ๋ํ ์ฒซ ๊ธ์ ์ฐ๊ฒ ๋๋๋ฐ์.
์ค๋์ Dart์์ ์ฌ๋ฌ ํด๋์ค์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ Mixin์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
Mixin์ด๋?
๊ณต์ ๋ฌธ์์๋ ์๋์ ๊ฐ์ด ๋์์์ต๋๋ค.
"Mixin์ ์ฌ๋ฌ ํด๋์ค ๊ณ์ธต์์ ํด๋์ค ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค."
๋ง๋ถ์ฌ Mixin์ ์ฌ์ฉํ๊ธฐ ์ํด์ with ํค์๋๋ฅผ ์ฌ์ฉํด ์ด๋ฆ์ ์ ์ด์ฃผ๋ฉด ๋๋ค๊ณ ๋์์์ต๋๋ค.
Example
์๋์ ๊ฐ์ด ํด๋์ค๋ค์ด ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์.
๋ณดํต ์๋์ ๊ฐ์ด Player ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์๋ ํ์ ํด๋์ค๋ ์์ ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
class Player {
void play() {
print("๊ฒฝ๊ธฐํ๋ ์ค...");
}
}
class BasketBallPlayer extends Player{
@override
void play() {
super.play();
print("๋๊ตฌ๊ฒฝ๊ธฐ ํ๋ ์ค...");
}
}
//๊ฒฝ๊ธฐํ๋ ์ค...
//๋๊ตฌ๊ฒฝ๊ธฐ ํ๋ ์ค...
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์์๋ฐ์ ๋ OOP์์ ์ฃฝ์์ ๋ค์ด์๋ชฌ๋ ๋ฌธ์ ๋ก ๋ค์ค ์์์ด ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ ๋ฐ๊ธฐ,์ ํ,์ํ ์ ๊ฐ ์ด๋์ ์๋ค์ด ๋ค์ค์ผ๋ก ์์ ๋ฐ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋ฐ๋ก ์ด ๋ Mixin์ ์ฌ์ฉํด์ฃผ๋ ๊ฒ ์ ๋๋ค.
Mixin์ ์๋์ ๊ฐ์ด ์์ mixin์ ๋ถ์ฌ์ฃผ๊ณ ์ด๋ฆ์ ์ง์ด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณค ๊ฐ mixin๋ค์ ๋ฉ์๋๋ค์ ๋ง๋ค์ด์ค๋๋ค.
mixin CanRun {
void run() {
print("๋ฐ๋ ์ค...");
}
}
mixin CanJump {
void jump() {
print("์ ํํ๋ ์ค...");
}
}
mixin CanShoot {
void shoot() {
print("์ํ
ํ๋ ์ค...");
}
}
์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ด with ํค์๋๋ฅผ ์ด์ฉํด ์ ์ฉ๋๋ mixin๋ค์ ์ฌ๋ฌ๊ฐ ์ ํํด์ ์ฌ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.
class Striker extends FootBallPlayer with CanRun,CanJump,CanShoot {
@override
void play() {
run();
shoot();
jump();
}
}
//๋ฐ๋ ์ค...
//์ํ
ํ๋ ์ค...
//์ ํํ๋ ์ค...
class Pitcher extends BaseBallPlayer with CanRun,CanJump {
@override
void play() {
run();
jump();
}
}
//๋ฐ๋ ์ค...
//์ ํํ๋ ์ค...
์ค๋์ ์ด๋ ๊ฒ Dart์์ ์ฌ๋ฌ ํด๋์ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ธ Mixin์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
ํน์๋ผ๋ ํ๋ฆฐ ์ ์ด ์๊ฑฐ๋ ๊ถ๊ธํ์ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
๋๊ธ