분류 전체보기
-
Java Design Pattern - 데커레이터 패턴(Decorator Pattern)Language/Java Design Pattern 2022. 11. 21. 17:22
데커레이터 패턴(Decorator Pattern) 데커레이터 패턴이란? 데커레이터 패턴은 어떤 기능에 추가적으로 기능을 덧붙이고 싶은 경우, 그 기능들을 Decorator로 만들어서 덧붙이는 방식이다. 예를 들어, 서브웨이 샌드위치를 생각해 보겠다. 서브웨이를 주문하면 고객의 기호에 따라 채소를 선택할 수 있다. 즉, 기본 빵 위에 채소와 토핑을 추가하여 샌드위치가 완성되는 것이다. 여기서 채소와 토핑(양상추, 피클, 양파, 치즈 등)들 각각이 데커레이터가 된다. 데커레이터 패턴을 사용하면 기능이 딱 정해져 있는 객체가 아닌, 동적으로 기능을 조합하여 객체를 만드는 것이 가능해진다. 데커레이터 패턴의 사용 이유 샌드위치를 만들기 위해서는 기본적으로 빵(Bread)이 필요하다. 그리고 토핑으로 양상추(Le..
-
Java Design Pattern - 옵저버 패턴(Observer Pattern)Language/Java Design Pattern 2022. 11. 21. 14:27
옵저버 패턴(Observer pattern) 옵저버 패턴이란? 옵저버 패턴은 어떤 객체에 이벤트가 발생했을 때, 이 객체와 관련된 객체(옵저버)들에게 통지하도록 하는 디자인 패턴을 말한다. 즉, 객체의 상태가 변경되었을 때, 특정 객체에 의존하지 않으면서 상태의 변경을 관련된 객체들에게 통지하는 것이 가능해진다. 이 패턴은 Pub/Sub(발행/구독) 모델로 불리기도 한다. 예를 들어, 유튜브를 생각해 보겠다. Pub/Sub 모델에 따르면, 유튜브 채널은 발행자가 되고 구독자들은 구독자(옵저버)가 되는 구조이다. 즉, 유튜버가 영상을 올리면 구독자들은 영상이 올라왔다는 알림을 받을 수 있다. 이렇게 각각의 유저들은 유튜브 채널을 구독하고 있는 옵저버가 된다. 옵저버 패턴의 사용 이유 예를 들어, 어떤 유저..
-
Java Design Pattern - 커맨드 패턴(Command Pattern)Language/Java Design Pattern 2022. 11. 20. 20:43
커맨드 패턴(Cammand Pattern) 커맨드 패턴이란? 커맨드 패턴은 객체의 행위(메서드)를 클래스로 만들어 캡슐화하는 패턴이다. 즉, 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하기 위해서는 그 객체(B)를 참조하고 있어야 하는 의존성이 발생한다. 하지만, 커맨드 패턴을 적용하면 이러한 의존성을 제거할 수 있다. 또한, 기능이 수정되거나 변경이 일어날 때, A 클래스 코드 수정할 필요 없이 기능에 대한 클래스를 정의하면 되기 때문에, 시스템이 확장성이 있으면서 유연해진다. 커맨드 패턴의 사용 이유 구글 홈이라고 "OK Google 히터 틀어줘"라고 하면, 히터를 틀어주는 실제 구글 서비스가 존재한다. 구글 홈을 사용하는 사용자를 Client, 구글 홈을 OKGoogle, 히터를 Heater..
-
Java Design Pattern - 스테이트 패턴(State Pattern)Language/Java Design Pattern 2022. 11. 20. 19:40
스테이트 패턴(State Pattern) 스테이트 패턴이란? 스테이트 패턴은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 자신이 직접 상태를 체크하여 상태에 따라 행위를 호출하지 않고, 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴을 말한다. 즉, 객체의 특정 상태를 클래스로 선언하고, 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의한다. 그리고 이러한 각 상태 클래스들을 인터페이스로 캡슐화하여, 클라이언트에서 인터페이스를 호출하는 방식을 말한다. 여기서 상태란, 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다. 스테이트 패턴의 사용 이유 예를 들어, 노트북을 켜고 끄는 상황을 생각해보겠다. 1. 노트북 전원이 켜져 있는 상태에서 전원 버튼을 누르면, 전원을 끌 수..
-
Java Design Pattern - 싱글톤 패턴(Singleton Pattern)Language/Java Design Pattern 2022. 11. 18. 17:33
싱글톤 패턴(Singleton Pattern) 싱글톤 패턴이란? 싱글톤 패턴이란, 인스턴스가 프로그램 내에서 오직 하나만 생성되는 것을 보장하고, 프로그램 어디에서든 이 인스턴스에 접근할 수 있도록 하는 패턴이다. 즉, 인스턴스가 사용될 때 똑같은 인스턴스를 여러 개 만드는 것이 아니라, 기존에 생성했던 동일한 인스턴스를 사용하게끔 하는 것이다. 싱글톤 패턴의 구현 public class SingleObject { private static SingleObject singleObject = null; private SingleObject() { } public static SingleObject getInstance() { if (singleObject == null) { singleObject = ne..
-
Java Design Pattern - 전략 패턴(Strategy Pattern)Language/Java Design Pattern 2022. 11. 18. 15:02
전략 패턴(Stratgy Pattern) 전략 패턴이란? 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말한다. 다시 말해, 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴이다. 전략 패턴의 사용 이유 위 다이어그램과 같이 기차(Train)와 버스(Bus) 클래스가 있고, 이 두 클래스는 Movable 인터페이스를 구현하고 있는 구조이다. public interface Movable { public String..