Design Patterns

반응형
반응형
Design Patterns/행동(Behavioral)

[Mediator]중재자패턴

Mediator Pattern 여러 객체들이 소통하는 방법을 캡슐화하는 패턴 여러 컴포넌트간의 결합도를 중재자를 통해 낮출 수 있다. BEFORE Hotel public class Hotel { public static void main(String[] args) { Guest guest = new Guest(); guest.getTower(3); guest.dinner(); Restaurant restaurant = new Restaurant(); restaurant.clean(); } } Guest public class Guest { private Restaurant restaurant = new Restaurant(); private CleaningService cleaningService = n..

Design Patterns/행동(Behavioral)

[Iterator]이터레이터패턴

Iterator Pattern 집합 객체 내부 구조를 노출시키지 않고 순회하는 방법을 제공하는 패턴 집합 객체를 순회하는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. BEFORE Client public class Client { public static void main(String[] args) { Board board = new Board(); board.addPost("디자인 패턴 게임"); board.addPost("선생님, 저랑 디자인 패턴 하나 학습하시겠습니까?"); board.addPost("지금 이 자리에 계신 여러분들은 모두 디자인 패턴을 학습하고 계신 분들입니다."); // TODO 들어간 순서대로 순회하기 List posts = board.getPosts()..

Design Patterns/행동(Behavioral)

[Interpreter]인터프리터패턴

Interpreter Pattern 자주 등장하는 문제를 간단한 언어로 정의하고 재사용하는 패턴 반복되는 문제 패턴을 언어 또는 문법으로 정의하고 확장할 수 있다. BEFORE PostfixNotation public class PostfixNotation { private final String expression; public PostfixNotation(String expression) { this.expression = expression; } public static void main(String[] args) { PostfixNotation postfixNotation = new PostfixNotation("123+-"); postfixNotation.calculate(); } private..

Design Patterns/행동(Behavioral)

[Command]커맨드패턴

Command Pattern 요청을 캡슐화하여 호출자(invoker)와 수신자(receiver)를 분리하는 패턴 요청을 처리하는 방법이 바뀌더라도, 호출자의 코드는 변경되지 않는다. BEFORE MyApp public class MyApp { private Game game; public MyApp(Game game) { this.game = game; } public void press() { game.start(); } public static void main(String[] args) { Button button = new Button(new Light()); button.press(); button.press(); button.press(); button.press(); } } Game publ..

Design Patterns/행동(Behavioral)

[Chain-of-Responsibility]책임연쇄패턴

Chain-of-Responsibility Pattern 요청을 보내는 쪽(sender)과 요청을 처리하는 쪽(receiver)을 분리하는 패턴 핸들러 체인을 사용해서 요청을 처리한다. BEFORE Client public class Client { public static void main(String[] args) { Request request = new Request("무궁화 꽃이 피었습니다."); RequestHandler requestHandler = new LoggingRequestHandler(); requestHandler.handler(request); } } Request public class Request { private String body; public Request(Stri..

Design Patterns/구조(Structural)

[Proxy]프록시패턴

Proxy Pattern 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴 초기화 지연, 접근 제어, 로깅, 캐싱 등 다양하게 응용해 사용할 수 있다. 클라이언트가 원래 사용하려는 객체를 직접하는 하는 것이 아니라 '대리인'을 사용하여 접근하는 방식. BEFORE Client public class Client { public static void main(String[] args) throws InterruptedException { GameService gameService = new GameService(); gameService.startGame(); } } GameService public class GameService { public void startGame() { Syste..

emojiyeon
'Design Patterns' 카테고리의 글 목록 (2 Page)