Strategy_Pattern - 8BitsCoding/RobotMentor GitHub Wiki
μ μ
μ¬λ¬ μκ³ λ¦¬μ¦μ νλμ μΆμμ μΈ μ κ·Όμ μ λ§λ€μ΄ μ κ·Ό μ μμ μλ‘ κ΅ν κ°λ₯νλλ‘ νλ ν¨ν΄.
μμλ‘ μ€λͺ
μꡬμ¬νμ΄ λ€μκ³Ό κ°λ€κ³ κ°μ ν΄λ³΄μ.
μ μ κ²μμμ μΌλ¦ν°μ 무기λ₯Ό ꡬννλ €νλ€.
무기λ λ κ°μ§ μ’ λ₯κ° μλ€. μΉΌ, κ²
class I_Weapon {
public:
virtual void attack();
};
class Knife : public I_Weapon {
void attack() {
// ꡬν
}
};
class Sword : public I_Weapon {
void attack() {
// ꡬν
}
};
class GameCharacter {
private:
// μ κ·Όμ
I_Weapon weapon;
public:
// κ΅νμ μν set
void setWeapon(I_Weapon weapon) {
this.weapon = weapon;
}
void attack() {
// λΈλ¦¬κ²μ΄νΈμ κ°λ
(μ€νμ μ΄μν¨.)
weapon.attack();
}
}
μ₯μ μ΄ λλ°?
λ¬΄κΈ°κ° μΆκ°λμλ€κ³ μκ°ν΄λ³΄μ.
// μκ±°λ©΄ λ!
class Ax : public I_Weapon {
void attack() {
// ꡬν
}
};
λ€μμ€λͺ
μ¬λ¬ μκ³ λ¦¬μ¦μ νλμ μΆμμ μΈ μ κ·Όμ (Weapon)μ λ§λ€μ΄ μ κ·Ό μ μμ μλ‘ κ΅ν(무기λ₯) κ°λ₯νλλ‘ νλ ν¨ν΄.