디자인패턴

    [Design Pattern] 구조 패턴 - 퍼사드 패턴

    github 코드 https://github.com/yaini/Spring_Study/tree/spring-3-design-pattern-structural/design-pattern/src/main/java/structural Facade 건물의 출입구로 이용되는 정면 외벽 부분 즉, 건물 안쪽은 복잡할지라도 사용자는 건물의 정면만 볼 수 있도록 해준다는 뜻이다. 퍼사드 패턴 클래스 라이브러리와 같은 어떤 소프트웨어의 커다란 코드 부분에 대한 간략화된 인터페이스를 제공한다. 소프트웨어 라이브러리를 쉽게 사용할 수 있게 해준다. 라이브러리의 세부 코드에 의존하는 일을 감소시켜 준다. 전체 코드 public class Facade { public static void main(String[] args) {..

    [Design Pattern] 구조 패턴 - 어댑터 패턴

    github 코드 https://github.com/yaini/Spring_Study/tree/spring-3-design-pattern-structural/design-pattern/src/main/java/structural 어댑터 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 도구 어댑터 패턴 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 호환성이 없는 인터페이스를 함께 동작할 수 있도록 만들어 준다. 또한 기존 클래스의 소스코드를 수정하지 않고 기존 인터페이스에 맞춰서 동작이 가능하도록 한다는 장점이 있다. 객체 어댑터 class CardObjectAdapter implements Card{ TrafficCard trafficCard; public ..

    [Design Pattern] 구조 패턴 - 컴포지트 패턴

    github 코드 https://github.com/yaini/Spring_Study/tree/spring-3-design-pattern-structural/design-pattern/src/main/java/structural 컴포지트 패턴 복합 객체와 단일 객체를 동일하게 취급할 때 사용하는 패턴 객체들의 관계를 트리 구조로 구성하여 전체-부분 관계로 표현할 수 있다. Component 복합 객체와 단일 객체가 동일하게 가지는 속성과 기능을 가진 인터페이스 Leaf 컴포지트 패턴에서 단일 객체를 의미한다. 트리구조에서 Composite의 자식 역할을 한다. Composite 컴포지트 패턴에서 복합 객체로 Component 인터페이스를 통해 자식 객체를 관리한다. 컴포지트 패턴의 가장 대표적인 예가 폴..

    [Design Pattern] 구조 패턴 - 데코레이터 패턴

    github 코드 https://github.com/yaini/Spring_Study/tree/spring-3-design-pattern-structural/design-pattern/src/main/java/structural 데코레이터 패턴 주어진 상황 및 용도에 따라 객체에 대한 책임을 덧붙이는 패턴 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 대안 자바는 다중 상속을 지원하지 않기 때문에 추가해야 할 기능의 종류가 많은 경우 데코레이터 패턴을 사용할 수 있다. 데코레이터 클래스와 데코레이터를 적용할 클래스는 합성 관계를 통해 표현된다. 합성(has-a) 관계 생성자에서 필드에 대한 객체를 생성하는 경우 전체 객체가 없어지면 부분 객체도 없어진다. 상속에 의해 코드를 재사용하는 것 대신, 객..

    [Design Pattern] 생성 패턴 - 빌더 패턴

    github 코드 https://github.com/yaini/Spring_Study/blob/spring-2-oop-design-pattern/design-pattern/src/main/java/creational/Builder.java 생성(construction)과 표기를 분리해 복잡한 객체를 생성한다. 별도의 Builder 클래스를 만들어 필수 값에 대해서는 생성자를, 선택적인 값에 대해서는 메소드를 통해 값을 입력 받은 후, build 메소드를 통해 하나의 인스턴스 리턴 선택적인(Optional) 멤버 변수, 파라미터나 지속성 없는 상태 값이 많을 때 팩토리 패턴에서 생성해야 하는 하위 클래스들이 복잡할 때 단점 매개변수가 적은 경우 생성자보다 코드가 장황해 진다. 구현 방법 빌더 클래스를 St..