Develop Story/DesignPattern4 Memento Pattern Memento Pattern(메멘토 패턴)이란? : 어느 시점에서 인스턴스 상태를 확실하게 기록하여 저장해 두고, 나중에 인스턴스를 그 시점의 상태로 되돌려주는 패턴입니다. 우리가 문서작업을 할 때 흔히 사용하는 '되돌리기'기능을 생각하시면 편합니다. 바로 예제를 살펴보겠습니다. 여기 게임속에서 움직이는 플레이어가 있습니다. class Player { private int x; private int y; public void move(int x, int y) { this.x = x; this.y = y; } public void printPosition() { System.out.println("현재 플레이어 위치: (" + x + ", " + y + ")"); } } 이 플레이어는 move로 해당 위치.. 2024. 4. 15. Chain of Responsibility Pattern 책임 연쇄 패턴(Chain Of Responsibility Pattern, COR) : 요청에 대한 처리를 하나의 객체가 몽땅 하는게 아닌, 여러개의 객체를 사슬처럼 연결해 연쇄적으로 처리하는 패턴입니다. 이러한 처리 객체들을 핸들러(Handler)라고 하고,각 핸들러는 요청을 처리할 수 없으면 다음 핸들러에 책임을 '떠넘기는'패턴입니다. 떠넘긴다? '떠넘긴다'라는 말은 부정적으로 들리지만, 하나의 객체를 처리하는 책임을 요청하는 쪽과 처리하는 쪽을 분리하여 결합도를 느슨하게 만들고, 처리할 객체를 변경할 경우에도 유연하게 대처가 가능하다는 의미입니다.주로 if-else문을 최적화하는데 있어 실무에서 많이 사용하는 패턴입니다. 예를 들어보겠습니다. public class Trouble { private .. 2024. 4. 8. Visitor Pattern Visitor 패턴 : 데이터 구조와 처리를 분리합니다. 여기 물건을 판매하는 가게가 있습니다. 이 가게에는 여러 종류의 상품이 있고, 각 상품에는 정보가 있습니다. class Book { private double price; public Book(double price) { this.price = price; } public double getPrice() { return price; } } class Fruit { private double weight; private double pricePerKg; public Fruit(double weight, double pricePerKg) { this.weight = weight; this.pricePerKg = pricePerKg; } public d.. 2024. 4. 1. Bridge Pattern Bridge Pattern이란? : 추상화와 구현을 분리하여 각각 독립적으로 확장할 수 있게 하는 디자인 패턴입니다. '기능의 클래스 계층'과 '구현의 클래스 계층'을 나누고 중간을 연결하는 다리(Bridge)를 놓습니다. 이렇게 두 개의 독립된 클래스 계층으로 나누면 각각의 클래스 계층을 독립적으로 확장할 수 있습니다. 예시 : 다음 예제는 Bridge 패턴을 사용하여 TV와 리모컨 사이의 관계를 구현했습니다. TV를 추상화하고(TV 인터페이스), 리모컨을 구현(Remote 인터페이스)으로 나타내어 각각 독립적으로 확장할 수 있습니다. 이를 통해 SamsungTV와 SonyTV를 구체적인 구현으로 만들어 BasicRemote 클래스를 이용하여 TV의 전원을 켜고 끄고 채널을 변경할 수 있습니다. // .. 2024. 3. 25. 이전 1 다음