Tech Collection

[Design Pattern] Strategy Pattern 본문

Concept/Design Pattern

[Design Pattern] Strategy Pattern

eee_269 2021. 5. 30. 21:05
728x90
반응형

스트래티지 패턴

  • 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다.
  • 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
public interface FlyBehavior {
	public void fly();
}
public class FlyWithWings implements FlyBehavior {
	public void fly() {
		System.out.println("날고 있어요!");
	}
}

public interface QuackBehavior {
	public void quack();
}
public class Quack implements QuackBehavior {
	public void quack() {
		System.out.println("꽥");
	}
}

public abstract class Duck {
	FlyBehavior flyBehavior;
	QuackBehavior quackBehavior;
	public Duck() {}
	public void performFly() {
		flyBehavior.fly();
	}
  public void performQuack() {
		quackBehavior.quack();
	}
	public void setFlyBehavior(FlyBehavior fb) {
		flyBehavior = fb;
	}
	public void setQuackBehavior(QuackBehavior qb) {
		quackBehavior = qb;
	}
	public void swim() {
		System.out.println("모든 오리는 물에 뜹니다. 가짜 오리도 뜨죠");
	}
}

오리의 행동 형식을 Duck의 서브클래스에서 setter 메소드를 호출하는 방법으로 설정

 

728x90
반응형