본문 바로가기

디자인 패턴5

[Design Pattern] 전략 (Strategy) 패턴 전략 (Strategy) 패턴여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴컨텍스트에서 사용할 알고리즘을 클라이언트가 선택한다. 전략 (Strategy) 패턴 beforeBlueLightRedLight 무궁화 꽃 게임 public class BlueLightRedLight { private int speed; public BlueLightRedLight(int speed){ this.speed = speed; } public void blueLight(){ if(speed == 1) System.out.println("무 궁 화 꽃 이"); else if(speed == 2) System.out.println("무궁화꽃이");.. 2024. 11. 25.
[Design Pattern] 상태(State) 패턴 상태(State) 패턴 객체 내부 상태 변경에 따라 객체의 행동이 달라지는 패턴 상태에 특화된 행동을 분리해 낼 수 있으며, 새로운 행동을 추가하더라도 다른 행동에 영향을 주지 않는다. OCP상태(State) 패턴 beforeStudent 클래스 public class Student { private String name; public Student(String name){ this.name = name; } private List privateCourses = new ArrayList(); public boolean isEnabledForPrivateClass(OnlineCourse onlineCourse){ return this.privateCour.. 2024. 11. 25.
[Design Pattern] 옵저버(Observer) 패턴 옵저버 (Observer) 패턴다수의 객체가 특정 객체 상태 변화를 감지하고 알림을 받는 패턴 발행(publish) / 구독(subscribe) 패턴을 구현할 수 있다. 옵저버 (Observer) 패턴 beforeChat Serverpublic class ChatServer { private Map> messages; public ChatServer() { this.messages = new HashMap(); } public void add(String subject, String message){ if(messages.containsKey(subject)){ messages.get(subject).add(message); .. 2024. 11. 25.
[Design Pattern] 브릿지 (Bridge) 패턴 브릿지 (Bridge) 패턴 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전 시킬 수 있다.즉, 서로 연관성이 있지만 변경될 가능성이 있는 개념들을 연결(Bridge)하여, 각각의 변경이 다른 쪽에 영향을 주지 않게함.브릿지 패턴의 핵심(구성) 요소  Abstraction (추상화) 추상적인 개념을 표현하는 부분 클라이언트가 사용하는/ 바라보는 부분이다.  Implementor (구현체)구체적인 기능을 구현하는 부분 보통 다른 인터페이스를 통해 구현된다.  Bridge: Abstraction과 Implementor를 연결하는 역할을 한다.  추상화 역할과 구현체 역할 모두 인터페이스로 선언하면 각각 독립적인 계층 구조로 발전이 .. 2024. 10. 23.
[Design Pattern] 추상 팩토리(Abstract Factory) 패턴 추상 팩토리 (Abstract factory) 패턴?추상 팩토리 패턴 (Abastract Factory Pattern)은 객체 생성과 관련된 디자인 패턴 중 하나이다.관련된 객체들의 그룹을 생성하는 인터페이스를 제공하는 패턴이다. 즉 상세한 클래스 명시 없이 객체를 생성할 수 있는 방법을 제공한다. 이 패턴은 팩토리 메소드 패턴보다 한층 추상화된 구조여러 제품 군을 생성할 수 있는 팩토리들을 조직화하는데 사용된다.구체적으로 어떤 클래스의 인스턴스를(concrete product)를 사용하는지 감출 수 있다. 추상 팩토리 패턴 적용  Beforepublic interface Anchor {}public class WhiteAnchor implements Anchor {}public interface Whe.. 2024. 10. 18.