📚 CS/그 외

[CS] 디자인 패턴 - 행동 패턴

수댕ʕت̫͡ʔ 2024. 11. 21. 18:11

1. 행동 패턴

행동패턴은 객체나 클래스 간의 알고리즘, 책임 할당 방식을 정의하는 디자인 패턴이다. 

 

행동패턴의 종류로는 이터레이터, 옵저버, 전략, 책임연쇄, 커맨드, 중재자, 메멘토, 상태, 템플릿메서드, 비지터 패턴이있다.

 

그중, 이터레이터, 옵저버, 전략 패턴에 대해 차례대로 공부해보았다.

 

1-1 반복자 패턴 (Iterator Pattern)

반복자 패턴은 컨테이너 객체의 내부 구조를 노출하지 않고, 그 내부 요소들에 순차적으로 접근할 수 있도록 설계된 패턴이다. 이를 통해 데이터를 탐색하는 로직과 데이터를 저장하는 로직을 분리한다.

 

[장점]

  • 유연성 : 컬렉션의 구조가 변경되어도 반복 로직을 수정하지 않아도 된다

 

[코드] - JAVA

 

이렇게 iterator를 사용하여 자바의 리스트를 순차적으로 접근할 수 있다.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorPatternExample {
    public static void main(String[] args) {
        // 데이터 컬렉션 생성
        List<String> items = new ArrayList<>();
        items.add("Item 1");
        items.add("Item 2");
        items.add("Item 3");

        // 반복자 사용
        Iterator<String> iterator = items.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

 

1-2. 옵저버 패턴 (Observer Pattern)

 

옵저버 패턴은 객체의 상태 변화를 관찰하다가, 상태가 변경되면 이를 자동으로 등록된 옵저버에게 통지하는 디자인 패턴이다. 

 

[장점]

  • 자동 알림 : 주체의 상태 변화가 있을 때 옵저버들에게 자동으로 알려준다.
  • 확장성 : 옵저버를 동적으로 추가/제거 할 수 있다.

[단점]

  • 성능 저하 : 옵저버 수가 많아지면 통지에 따른 성능 문제가 발생할 수 있다.

 

1-3. 전략 패턴 (Strategy Pattern)

 

전략 패턴은 알고리즘을 캡슐화하고, 런타임 시 컨텍스트에서 이를 교체할 수 있도록 설계된 패턴이다. 행위를 동적으로 변경하거나 다양한 알고리즘을 유연하게 적용할 수 있다.