본문 바로가기
Java/Design Pattern

전략 패턴(Strategy Pattern)

by bloodFinger 2020. 8. 23.

전략 패턴

각 객체들이 할 수 있는 행위들을 각 전략클래스에 생성하고, 각 전략클래스는 하나의 추상적인 접근점 (인터페이스)를 상속받아 각각 자신의 행위들을 정의한다.

행위를 변경하고 싶을때마다 전략을 바꾸는 코드로 유연하게 개발할 수 있다.

 

 

 

 

 

 

 

 

 


예제

 

public interface Weapon {
	
    public void attack();
	

}
public class knife implements Weapon {

	@Overide
    public void attack() {
    	System.out.println("검 공격");
    }
}
public class Ax  implements Weapon {

	@Overide
    public void attack() {
    	System.out.println("도끼 공격");
    }
}

 

 

 

public class Character {
	//접근점
    private Weapon weapon;
    
    //교환 가능 기능
    public void setWeapon(Weapon weapon) {
    	this.weapon = weapon;
    }
    
    public void attack() {
    	if(weapom == null){
        	System.out.println("주먹 공격")
        }else {
        	weapon.attack();  //델리게이트
    	}
    }
}

 

 

실행

 

public static void main(String[] args) {
	Character character = new Charater();
    
    character.attack();   //맨손 공격
    
    character.setWeapon(new Knife()); 
    character.attack();//검 공격
    
    character.setWeapon(new Ax()); 
    character.attack();//도끼 공격
    
}

'Java > Design Pattern' 카테고리의 다른 글

Template Method Pattern  (0) 2020.09.01
어댑트 패턴(Adapter Pattern)  (0) 2020.08.25