자바생
article thumbnail
Decorator Pattern
Design Pattern 2022. 11. 6. 19:17

데코레이터 패턴이란? 데코레이터 패턴은 프록시 패턴과 동일하게 ‘프록시’를 사용하는 방법이지만 둘은 그 의도(intent)가 다릅니다. 프록시는 주로 접근 제어를 목적으로, 데코레이터는 새로운 기능 추가가 목적으로 정의됩니다. 즉, 데코레이터 또한 서버와 프록시가 같은 인터페이스를 구현하여 클라이언트는 서버에게 직접적인 요청이 아닌 프록시를 통해 요청을 보냅니다. 그리고 클라이언트 입장에서는 서버에게 요청을 한 것인지, 프록시에게 요청을 한것인지 모르게 되어서 요구 사항 변경 시 클라이언트 코드는 변경되지 않습니다. 그러면 Decorator pattern이 어떻게 생겼는지 코드로 보겠습니다. 상황 예시 데코레이터 패턴은 새로운 기능 추가를 목적으로 사용한다고 했습니다. 그러면 데코레이터 패턴을 쉽게 이해..

article thumbnail
Template Callback Pattern
Design Pattern 2022. 11. 1. 00:24

콜백 정의 위키에서는 콜백을 다른 코드의 인수로서 넘겨주는 실행 가능한 코드라고 합니다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있습니다. Java에서는 이러한 콜백 코드를 전달할 때 람다나 익명 내부 클래스 형태로 넘겨줍니다. 템플릿 콜백 ? 템플릿 메서드 ? 템플릿 메서드 단일 상속만이 가능한 자바 언어에서 템플릿 메서드를 사용하는데 한계가 있습니다. 자식 클래스 입장에서는 부모 클래스의 기능을 전혀 사용하지 않고, 자식 클래스가 부모 클래스와 컴파일 시점에 강하게 결합됩니다. 이러한 단점을 해결하기 위해서 상속의 단점을 제거하고 interface를 사용하는 전략 패턴을 DI에 주로 사용합니다. 템플릿 콜백 DI에서 전략 패턴을 주로 사용하는..

Singleton Pattern
Design Pattern 2022. 3. 17. 18:12

기본 User, Main 클래스 package singletonPattern; public class User extends Thread{ public User(String name) { super(name); } public void run() { Printer printer = Printer.getPrinter(); printer.print(Thread.currentThread().getName() + " using " + printer.toString() + "."); } } package singletonPattern; public class Main { private static final int NUM = 5; public static void main(String[] args) { User[..

article thumbnail
Command Pattern
Design Pattern 2022. 3. 15. 16:07

Command Pattern 이란 무엇인가요? 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우 1번 버튼을 누르면 재생이 되고, 2번 버튼을 누르면 정지가 됨 실행될 기능을 캠슐화함 기능의 실행을 요구하는 invoker, 클래스와 실제 기능을 실행하는 receiver 클래스 사이의 의존성 제거함 실행될 기능의 변경에도 invoker 클래스를 변경하지 않아도 사용할 수 있음 Command Pattern을 사용함으로써 어떤 장점이 있을까요? 기존 클래스가 변경되지 않으면서 명령을 쉽게 추가할 수 있음 실제로 작업을 수행하는 개체에서 작업을 호출하는 개체를 분리함 이벤트를 발생시키는 클래스를 변경하지 않고 새 명령을 추가할 수 있으므로 확장성 좋음 즉, 버튼을 누를 때 버튼 클래스를 변경하..

State Pattern
Design Pattern 2022. 3. 12. 01:51

State Pattern은 무엇인가요? 상태에 따라 동일한 작업이 다른 방식으로 실행될 때 해당 상태가 작업을 수행하도록 위임하는 디자인 패턴 Context, State, Concrete class 개념 Context 상호 작용할 클라이언트에 대한 인터페이스를 정의 객체의 현재 상태를 정의하는 데 사용할 수 있는 구체적인 상태 객체에 대한 참조 유지 State 각 구체적인 상태가 수행해야 할 작업을 선언하기 위해 인터페이스 정의 Concrete State에 정의된 메서드에 대한 구현을 제공 객체의 내부 상태가 변경될 때, 객체가 동작을 변경할 수 있는 패턴 객체가 클래스를 변경하는 것으로 보임 알림 “상태”에 따라 알림을 수행할 때 모바일의 “동작”이 변경된다. 상태가 vibration이면 진동이 울림 ..

Strategy Pattern
Design Pattern 2022. 3. 4. 21:11

우리는 게임할 때, strategy(전략)을 자주 바꿔서 게임을 하게된다. strategy pattern은 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 변화되는 부분을 각각 클래스 set으로 만든다. 해당 책에서와 같이 공격하는 클래스, 움직이는 클래스를 생성 공격을 하는(발을 찬다. 주먹을 찌른다) 행동을 각 클래스로 생성한 뒤, 공격하는 클래스에 상속 관계를 맺는다. 다양한 방식으로 특정 작업을 수행하는 클래스를 선택하여 strategy라고 하는 별도의 클래스로 추출 context = origin class context에는 strategy를 참조하는 필드가 존재해야함 context가 strategy를 직접적으로 실행하는 것이 아님 context는 strategy에 대해 잘 모름 contex..

728x90

검색 태그