목록2024/06 (16)
초보개발자 긍.응.성
이 글은 헤드퍼스트 디자인패턴과 GoF 디자인패턴을 읽고 정리한 글입니다.1. 추상 팩토리 패턴(Abstract Factory Pattern)구상 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체로 이루어진 제품군(families)을 생산하는 인터페이스를 제공합니다. 구상 제품 클래스는 서브클래스에서 생성합니다.1.1. 구성 요소AbstractFactoryProduct 생성을 위한 Factory 인터페이스로 AbstractFactory라 합니다.AbstractProduct 타입을 생성 후 반환하는 메서드를 갖습니다.ConcreteFactoryAbstractFactory를 구현한 구상 팩토리 클래스입니다.실제 ConcreteProduct를 생성하여 반환하는 메서드를 구현합니다.AbstractProduc..
이 글은 헤드퍼스트 디자인패턴과 GoF 디자인패턴을 읽고 정리한 글입니다.1. 팩토리 메서드 패턴(Factory Method Pattern)객체를 생성할 때 필요한 인터페이스를 생성하고, 어떤 클래스의 인스턴스를 만들지 서브클래스에서 결정합니다. 팩토리 메소드 패턴은 클래스 인스턴스를 만드는 일을 서브클래스에 위임합니다.1.1. 구성 요소Product팩토리 메서드를 통해 생성될 Object의 인터페이스입니다.ConcreteProductProduct 인터페이스를 구현하는 구현 클래스입니다.구현된 팩토리 메서드를 통해 반환될 Object 객체입니다.CreatorProduct 타입을 반환하는 팩토리 메서드가 정의되어있습니다.때에 따라 기본 ConcreteProduct를 반환하는 팩토리가 구현될 수 있습니다.팩..
이 글은 헤드퍼스트 디자인패턴과 GoF 디자인패턴을 읽고 정리한 글입니다.1. 데코레이터 패턴(Decorator Pattern)데코레이터 패턴은 객체의 추가 요소를 동적으로 더할 수 있는 패턴입니다. 서브클래스를 만드는 것 보다 데코레이터 패턴을 통해 훨씬 유연하게 기능을 확장할 수 있습니다.1.1. 구성 요소Component동적으로 기능이 추가될 객체의 인터페이스입니다.꼭 인터페이스가 아니라 추상클래스여도 상관없지만 가능한 인터페이스로 만드는 것을 권장합니다.ConcreteComponent기능이 추가될 수 있는 객체입니다. Component를 구현 또는 상속합니다.추후 설명드릴 Decorator들로 기능이 추가될 base 객체입니다.DecoratorComponent에 대한 참조를 가지며, Compone..
이 글은 헤드퍼스트 디자인패턴과 GoF 디자인패턴을 읽고 정리한 글입니다.1. 옵저버 패턴(Observer Pattern)한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다.1.1. 구성 요소Subject주제를 나타내는 인터페이스입니다.Observer가 자신을 옵저버 목록으로 등록하거나, 옵저버 목록에서 탈퇴하고 싶을 때에는 Subject 인터페이스의 메서드를 사용합니다.Observer옵저버로 쓰일 객체가 구현할 인터페이스입니다.Update 메서드를 통해 주제의 상태가 변경됨을 전달받습니다.ConcreteSubject주제 역할을 하는 구상 클래스입니다.Subject 인터페이스를 구현하며 옵저버 목록을 ..
이 글은 헤드퍼스트 디자인패턴을 읽고 정리한 글입니다.1. 전략 패턴(Strategy Pattern)전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 합니다.전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다.구성은 Context, Strategy 그리고 Strategy 구현체로 이루어져 있습니다.Context는 사용할 Strategy의 인터페이스 타입을 필드로 갖고있으며, 실제로 사용할 Strategy 구현체를 세팅하여 사용할 전략(알고리즘)을 유연하게 적용 또는 수정할 수 있습니다.1.1 적용 방법Context와 Strategy를 식별합니다. 바뀌지 않는 부분을 Context, 바뀌는 부분을 Strategy로 세팅합니다.Strat..
지난 글에서는 MDC를 데이터를 리액티브 환경에서 사용할때 생기는 이슈와 해결할 수 있는 방법에 대하여 알아보았습니다.https://ckddn9496.tistory.com/179Reactor With MDC - SpringBoot 2그리고 Reactor도 이러한 이슈가 있다는것을 알고 있었는지, Reactor 3.5 버전부터 자동으로 ThreadLocal의 값을 Context를 통하여 전파할 수 있도록 Automatic Context Propagation을 제공하게 되었습니다.이번 글에서는 SpringBoot 3 버전 WebFlux에서 Automatic Context Propagation를 통해 MDC를 다루는 법에 대하여 알아보겠습니다.1. Reactor With MDC (springboot 3)Spr..