구조패턴

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