디자인 패턴

    [Design Pattern] 구조 패턴 - 브리지 패턴

    github 코드 https://github.com/yaini/Spring_Study/tree/spring-3-design-pattern-structural/design-pattern/src/main/java/structural 브리지 패턴 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴 기능과 구현에 대해 두 개의 별도의 클래스로 구현 구현부는 객체에서 동작을 처리하기 위해, 추상부는 확장을 위해 존재한다. 어댑터 패턴이 추가 요구사항을 위해 기능을 추가하는 반면 브리지 패턴은 설계 진행 중에 의도적으로 레이어를 분리시킨다. Abstraction: 기능 계층의 추상 인터페이스 RefindAbstraction: Abstraction을 상속하여 기능을 제공하는 클래스 Implemen..

    [Design Pattern] 생성 패턴 - 싱글톤 패턴

    github 코드 https://github.com/yaini/Spring_Study/blob/spring-2-oop-design-pattern/design-pattern/src/main/java/creational 싱글톤 패턴 한 클래스에 한 인스턴스만 존재하도록 제한하는 패턴 특징 기본 생성자가 private static 팩토리 메소드인 getInstance 인스턴스를 저장할 static 필드 장점 하나의 인스턴스만 생성하므로 메모리 낭비를 방지할 수 있다. static으로 전역으로 사용되는 인스턴스이기 때문에 데이터 공유가 쉽다. 단점 여러 스레드에서 동시에 접근 할 수 있으므로 동시성 문제 유의하여 설계해야 한다. 단위 테스트는 격리된 환경에서 실행되어야 하지만, 싱글톤 패턴은 전역에서 사용하기 ..

    [Design Pattern] 생성 패턴 - 프로토 타입 패턴

    github 코드 https://github.com/yaini/Spring_Study/blob/spring-2-oop-design-pattern/design-pattern/src/main/java/creational 프로토 타입 패턴 생성할 객체들의 타입이 프로토타입 인스턴스로부터 결정되며, 새 객체를 위해 자신을 복제한다. 상태 값이 다른 객체 생성을 위해 깊은 복사를 사용하는 객체 생성 방식 기존 객체를 복제함으로써 객체를 생성한다. 단점 clone에 대한 override 요구 객체를 생성하는데 비용이 많이 들기 때문에 유사한 객체가 존재하는 경우 사용 프로토 타입 패턴이라고 하면 뭔가 대단한 원칙인 것 같지만 객체를 생성 후 복사한다는 뜻이다. 예를 들어, DB에 접근해서 가져와야 할 데이터가 이미..