[TIL] 2020.06.01 TIL-200601

디자인패턴 학습

1. 인터페이스란?

  • 기능에 대한 선언과 구현 분리
  • 기능을 사용하는 통로

2. 전략 패턴

  • 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근점에서 서로 교환이 가능하도록 하는 패턴
  • 어떤 행위(메소드)에 따른 방법(전략)을 선택하여 행위를 유연하게 확장하는 것

기본패턴

스트레티지 패턴

3. 델리게이트

  • 개발시, 논리적인 설계 후 코드 구현 단계에서 효율적으로 일을 분배하기 위해 인터페이스를 통해 가능
  • 실행시, 인터페이스를 실행하면 인터페이스가 직접 처리하는 것이 아닌, 그 인터페이스가 가리키는 인스턴스가 처리하는 방식

4. 코드실습

스트레티지 패턴

Weapon interface

public interface Weapon {
	public void attack();
}

Sword Class

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

Knife Class

public class Knife implements Weapon{
	
	@Override
	public void attack() {
		System.out.println("칼 공격");
	}
}

GameCharactor Class

public class GameCharactor {
	// 접근점
	private Weapon weapon;

	// 교환 가능
	public void setWeapon(Weapon weapon) {
		this.weapon = weapon;
	}

	public void attack() {
		if (weapon == null) {
			System.out.println("맨손 공격");
		} else {
			// 델리게이트
			weapon.attack();
		}
	}
}

GameMain

public class GameMain {
	public static void main(String[] args) {
		GameCharactor charactor = new GameCharactor();
		
    //맨손공격
		charactor.attack();

    //검공격
		charactor.setWeapon(new Sword());
		charactor.attack();
    //칼공격
		charactor.setWeapon(new Knife());
		charactor.attack();
	}
}

실행결과

맨손 공격
검 공격
칼 공격

댓글남기기