2024/12/17 3

[헤드퍼스트 디자인 패턴] 7-2. 퍼사드 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 퍼사드 패턴복잡한 서브시스템을 하나의 단순한 인터페이스로 감싸는 디자인패턴복잡도를 감추어, 클라이언트가 쉽게 사용하도록 하는것이 목적 2. 예제: 홈시어터 퍼사드예제) HomeTheaterFacade더보기public class HomeTheaterFacade { Amplifier amp; Tuner tuner; StreamingPlayer player; Projector projector; TheaterLights lights; Screen screen; PopcornPopper popper; public void watchMovie(String movie) { poppe..

Java/Design Pattern 2024.12.17

[헤드퍼스트 디자인 패턴] 7-1. 어댑터 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 어댑터 패턴호환되지 않는 인터페이스를 클라이언트가 기대하는 인터페이스로 변환해주는 디자인 패턴기존 클래스를 수정하지 않고, 재사용할 수 있게 도와줌 2. 예제: 오리Duck예제) Duck더보기public interface Duck { void quack(); void fly();}public class MallardDuck implements Duck { public void quack() { System.out.println("꽥"); } public void fly() { System.out.println("날고 있어요!"); }} Turkey예제) Turkey더보기public interface ..

Java/Design Pattern 2024.12.17

[헤드퍼스트 디자인 패턴] 6. 커맨드 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 커맨드 패턴요청자와 수행자를 분리하는 패턴요청을 하나의 객체로 캡슐화하여, 서로 다른 요청을 매개변수로 처리 요소구성요소역할 설명Receiver실제 작업을 수행하는 객체Command작업을 캡슐화한 인터페이스 또는 클래스Invoker커맨드 객체를 받아 실행을 요청하는 객체 장점요청을 객체로 기능 확장 (저장, 취소, 재실행 등)요청 내역을 유연하게 구성 가능 (큐잉, 로깅, 트랜잭션 처리 등) 2. 예제: 리모컨리모컨 (Receiver)예제) RemoteControl더보기public class RemoteControl { Command[] onCommands, offCommands; Command undoCommand;..

Java/Design Pattern 2024.12.17