본문 바로가기

Design Pattern8

[Design Pattern] 어댑터 패턴 이번에 다뤄볼 디자인 패턴은 어댑터 패턴이다. 어댑터 패턴을 사용해볼만한 경우는 크게 두 가지이다. 외부 요소를 기존 시스템에 재사용하고 싶지만 아직 만들어지지 않은 경우 외부 요소를 기존 시스템에 재사용하고 싶지만 호환되지 않은 경우 이렇게 두 경우에 사용할만하다. 또한, 레거시 코드에서도 활용이 가능하다. 코드와 함께 알아보자. OuterTiger // 예전에 만들어진 레거시 코드 or 외부에서 만든 라이브러리 // OuterTiger 코드를 수정하면 OCP 원칙 위반 public class OuterTiger { private String fullName = "호랑이"; public String getFullName() { return fullName; } } OuterTiger라는 레거시 코드 또.. 2024. 3. 18.
[Design Pattern] 프록시 패턴 이번 포스팅은 디자인 패턴 중 하나인 프록시 패턴에 대해 알아본다. 코드와 상황은 전략 패턴에서 사용했던 코드와 상황을 가져간다. 만약 문지기가 동물들을 쫓아내기 전에 무엇인가 할 행동이 추가되었다고 생각해보자. 그렇다면 코드는 다음과 같이 작성할 수 있을 것이다. DoorMan public class DoorMan { public void 쫓아내(Animal a){ System.out.println("안녕 ㅎㅎ"); System.out.println(a.getName() + " 쫓아내"); } } 할 행동이 잘 출력되는 것을 확인할 수 있다. 하지만, 이는 SOLID 원칙의 O(OCP - 개방 페쇄 원칙)에 위배된다. 당연하다. 기존에 있던 DoorMan을 수정했기 때문이다. 그렇기에 SOLID 원칙에.. 2024. 3. 12.
[Design Pattern] 전략 패턴 전략 패턴은 디자인 패턴의 꽃이라고 불리우는 패턴이다. 전략 패턴을 제대로 적용하지 않으면 다른 모든 디자인 패턴들이 의미가 없을 정도로 중요하다고 한다. 코드로 살펴보기 전에 이해를 돕기 위한 그림은 다음과 같다. 문지기가 성의 입구에서 들어오는 무언가를 관리한다고 하자. 이때, 맨처음에는 쥐만을 쫓아내라고 명령을 내렸다가 다음에는 호랑이 등으로 추가될 때 마다 명령을 새로 줘야한다. 이는 문지기 입장에서 복잡한 상황이 될 것이다. 예를 들어 64 종류의 동물들을 쫓아내라고 한다면 문지기는 이걸 다 기억해야 한다. 결국 동물로 추상화하여 명령을 주는 것이 전략 패턴이라고 생각하면 된다. 코드 예시 Mouse public class Mouse{ private String name = "쥐"; public.. 2024. 3. 12.
SOLID란? SOLID란 무엇일까? 흔히 객체지향적 설계를 얘기할 때 SOLID 원칙을 설명을 한다. 하지만, 이 원칙을 지키면 좋다는 것이지 위배했다고 무조건 최악의 코드가 되는 것은 아니다. 한번 SOLID의 요소에 대해 하나하나 알아보자. 1. S(SRP - Single Responsibility Principal - 단일 책임의 원칙) SRP - Object - Class가 하나의 책임만을 가져야 함 예를 들어 아래와 같은 Add Class가 있다고 했을 때 여기에 곱하기 나누기를 넣으면 단일 책임의 원칙이 위배된다. public class Add{ public int add(int a, int b){ return a + b; } public static void main(String[] args){ Syst.. 2024. 3. 11.