본문 바로가기

디자인 패턴5

[Design Pattern] 싱글톤 패턴 우리가 지금껏 문지기 객체를 여러개 생성할 수 있었다. 하지만, 우리가 이번에 알아볼 싱글톤 패턴을 사용하면 문지기 객체를 한개밖에 사용하지 못한다. 그렇다면 싱글톤 패턴의 장점이 뭘까? 싱글톤 패턴의 장점 싱글톤 패턴의 사용시 장점은 다음과 같다. 메모리 절약 싱글톤 패턴은 전체 시스템에서 단 하나의 인스턴스만을 생성한다. 따라서, 동일한 리소스나 서비스에 대해 여러 인스턴스를 생성할 필요가 없다. 공유 리소스 접근 용이 싱글톤 리소스는 전역적으로 접근이 가능하다. 따라서, 다양한 부분에서 손쉽게 해당 인스턴스를 공유하고 접근할 수 있다. 인스턴스 제어 생성자가 private으로 설정되어 있다. 따라서, 인스턴스 생성을 엄격하게 제어하여 인스턴스가 무분별하게 생성되는 것을 방지한다. 데이터 일관성 싱글.. 2024. 3. 25.
[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.