전략 패턴(Strategy Patterns)

kimsoapsoap's avatar
Aug 13, 2024
전략 패턴(Strategy Patterns)
💡
전략 패턴(Strategy Pattern)은 객체 지향 설계 원칙 중에서 추상화에 의존해야 하며, 구체적인 것에 의존해서는 안 된다는 원칙을 잘 구현한 디자인 패턴입니다. 이 패턴을 통해 다양한 알고리즘을 정의하고, 필요에 따라 적절한 알고리즘을 선택할 수 있습니다. 이로 인해 코드의 유연성과 확장성이 높아지고, 유지보수가 쉬워집니다.
 
전략 패턴에서는 행동을 정의하는 여러 알고리즘이 각각 별도의 클래스에서 구현됩니다. 이러한 알고리즘은 공통된 인터페이스나 추상 클래스를 통해 정의되며, 클라이언트 코드에서는 이 추상화된 인터페이스(혹은 추상 클래스)만을 참조합니다 새로운 요구 사항이나 기능 변경이 있을 때 추상 클래스나 인터페이스를 구현하는 구현 객체만 갈아끼워주면 기존의 코드를 변경하지 않아도 됩니다.
 
public abstract class Animal { public abstract String getName(); } public class Mouse extends Animal { private String name = "쥐"; @Override public String getName() { return name; } } public class Dog extends Animal { private String name = "개"; @Override public String getName() { return name; } } public class Doorman { public void expel(Animal m) { System.out.println(m.getName() + " 쫓겨났다."); } } public class App { public static void main(String[] args) { Doorman dm = new Doorman(); Mouse m1 = new Mouse(); dm.expel(m1); Tiger t1 = new Tiger(); dm.expel(t1); } } 위 코드에서는 Doorman 클래스가 Animal 타입에 의존하고 있으며, 실제로 어떤 동물을 쫓아낼지는 런타임 실행시점에 결정할 수 있습니다. 이는 전략 패턴의 기초가 되는 개념입니다. 다양한 동물(예: Mouse, Tiger)을 쫓아내기 위해 Doorman 클래스를 수정할 필요가 없으며 단지 새로운 Animal 구현체만 추가하면 됩니다.
 
Share article

zerfa