728x90
반응형
1. 스트래티지 패턴 : 여러가지 알고리즘의 추상적인 접근점을(interface) 만들어 그 접근점을 서로 교환할 수 있도록 하는 패턴
즉 구현체 여러개면 아무거나 하나 골라서 실행한다는것
예를 들면 캐릭터가 (칼,맨손,주먹) 을 든다 에서 칼,맨손,주먹중 하나를 고를 수 있다는것
인터페이스 : 기능에 대한 선언과 구현 분리 , 기능을 사용 통로
델리게이트 : 위임한다. 다른 객체의 기능을 빌려 사용하는것,
이 전략을 사용하는 이유는 변경에는 닫혀있고 확장에는 열려있기 때문
디자인 문제를 해결하는 방법, 즉 객체는 구현, 변경, 테스트, 재사용이 쉬워야 한다.
context 에서 사용할 알고리즘을 클라이언트가 선택한다
예시
게임 캐릭터가 weapon 이라는 전력을 가지고있는다.
weapon 을 통해서 무기를 고를수 있다.
package Strategy;
public class GameCharaceter {
// 접근점 만들어줌
private Weapon weapon;
// 무기가 교환 가능
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public void attack() {
if (weapon == null){
System.out.println("x");
}
else{
weapon.attack();
}
}
}
전략을 가지고 있는다. (접근점 )
// 접근점
public interface Weapon {
public void attack(); // knife, sword
package Strategy;
public class Sword implements Weapon{
@Override
public void attack() {
System.out.println("sword attack");
}
}
package Strategy;
public class knife implements Weapon{
@Override
public void attack() {
System.out.println("knife attack");
}
}
전략에서 사용할 무기들 칼, 검
package Strategy;
import java.awt.image.Kernel;
public class Main {
public static void main(String[] args) {
GameCharaceter characeter = new GameCharaceter();
characeter.attack();
characeter.setWeapon(new knife());
characeter.attack();
characeter.setWeapon(new Sword());
characeter.attack();
}
}
x
knife attack
sword attack
반응형
댓글