목록프로그래밍 (17)
도찐개찐
백엔드 카테고리와 벡터 스토어 컬렉션의 생성이 정합성 문제로 인해 맞물리지 않을 때 발생할 수 있는 다양한 사이드 이펙트를 고려해야 합니다. 이러한 문제는 시스템의 일관성 및 기능적 문제를 초래할 수 있습니다. 몇 가지 잠재적인 사이드 이펙트를 살펴보겠습니다:1. 데이터 불일치일관성 문제: 백엔드에 존재하는 카테고리가 벡터 스토어 컬렉션에는 존재하지 않는다면, 데이터 일관성이 깨지게 됩니다. 이는 시스템 전체의 신뢰성을 저하시킬 수 있습니다.검색 결과 오류: 벡터 스토어 컬렉션이 완전하지 않으면, 검색이나 추천 시스템에서 부정확한 결과를 제공할 수 있습니다.2. 시스템 동작 오류기능적 오류: 특정 기능이 백엔드 카테고리와 벡터 스토어 컬렉션을 모두 필요로 하는 경우, 벡터 스토어가 생성되지 않으면 기능이..
Decorator Pattern 동적으로 추가하거나 수정 할 필요가 있을때 사용하는 구조 패턴. 기본기능에 추가 기능을 연결해 확장성을 향상시키고 코드 중복을 줄일 수 있게 해줍니다. 주로 유연하고 재사용 가능한 코드를 작성 할 때 유용합니다. 사용시점 여러 기능의 조합이 필요 할 때, 여러 기능을 동적으로 추가하거나 제거할 필요가 있을 때. 확장이 예상 되는 경우에, 기능을 쉽게 추가하거나 변경 할 수 있어야 할 때. 기존 클래스를 수정하지 않고 기능을 추가하거나 변경하고 싶을 때. 종류 Concrete Component: 실제 기본 기능을 정의하는 클래스입니다. Abstract Decorator: 모든 데코레이터가 구현해야 하는 인터페이스나 추상 클래스입니다. Concrete Decorator: Ab..
Facade Pattern 사용시점 복잡한 시스템에 단순한 인터페이스가 필요할 때 여러 서브시스템 감의 종속성이 복잡하게 얽혀 있을 때 클라이언트가 서브시스템의 내부 구조를 몰라도 되게 하고 싶을 때 결론 1. 복잡한 시스템의 일부분에 대한 통합된 인터페이스를 제공하는 구조 패턴 2. 클라이언트와 복잡한 시스템 간의 상호작용을 단순화 3. 클라이언트가 시스템의 세부 구조를 몰라도 되게끔 합니다. // 서브 시스템 클래스 public class FileReader { public void readFile(String fileName) { System.out.println("Reading file: " + fileName); } } public class FileWriter { public void writ..
Factory Method Pattern 사용시점: 클래스가 자신이 생성할 객체의 클래스를 예측 할 수 없는 경우: 라이브러리나 프레임워크의 사용자가 제공하는 확장 클래스의 인스턴스를 생성해야 할 때 등에 사용됩니다. 클래스가 하위 클래스에 객체 생성 책임을 위임하고 싶은 경우: 객체 생성 로직을 하위 클래스에게 맡겨 다양한 객체 생성 방식을 구현 코드 중복 최소화: 공통 생성 로직을 부모 클래스에서 구현하고, 세부 로직은 하위 클래스에서 처리하면 코드 중복을 줄일 수 있습니다. 장점: 유연성 증가: Factory Method 패턴은 객체 생성과 사용을 분리하므로, 다양한 객체 생성 전략을 쉽게 교체하거나 확장 할 수 있습니다. 결합도 감소: 클라이언트가 특정 클래스와 직접적으로 결합 되지 않으므로, 코..
Observer Pattern 사용시점 상태 의존성: 하나의 객체의 상태 변경이 다른 객체의 상태나 동작에 영향을 미칠 때 이벤트 발생: 특정 이벤트가 발생했을 때 관찰자들에게 알림을 보낼 필요가 있을 때 코드 결합 최소화: 주제와 관찰자 사이의 결합을 최소화 하고자 할때 종류 푸시 모델: 주제가 관찰자에게 필요한 모든 정보를 직접 보내는 방식, 관찰자는 주제로부터 푸시된 정보만을 이용합니다. 풀 모델: 주제가 변화를 통보만 하고, 관찰자는 필요한 정보를 주제로부터 직접 가져오는 방식입니다. 이 경우 관찰자가 필요한 정보만을 가져올 수 있으며, 주제와 관찰자 사이의 의존성이 낮아 집니다. 결론 상태 변화를 관찰하는 객체들에게 상태 변화를 알려주는 패턴 주로 이벤트 핸들링 시스템에서 사용되며, 하나의 주제..
Singleton Pattern(싱글톤 패턴) 사용시점: 단일 인스턴스 필요시: 로그 파일 작성기, 드라이버 객체, 캐시, 스레드 풀 등과 같이 전체 시스템에서 단 하나의 인스턴스만 유지 되어야 하는 경우에 사용 자원 공유: 여러 클라이언트가 동일한 리소스에 엑세스 해야 하는 경우에 싱글톤 패턴이 유용 비용 절감(재사용): 객체를 생성하는 데 비용이 많이 드는 경우, 싱글톤 패턴을 사용해 한번만 생성하고 재사용 장점: 인스턴스 제어: 인스턴스가 한 개만 생성 되는 것을 보장하므로, 중복 생성으로 인한 리소스 낭비 방지 전역 엑세스 포인트 제공: 싱글톤 객체는 애플리케이션 내에서 쉽게 엑세스 할 수 있는 전역 엑세스 포인트를 제공 자원 공유: 동일한 객체를 여러 클라이언트와 공유 할 수 있으므로, 자원을 ..
State Pattern 사용시점 객체의 행동이 상태에 따라 달라질 때: 객체가 특정 상태에 있을 때만 특정 행동을 해야 하거나, 상태에 따라 동일한 연산이 다르게 동작해야 하는 경우 유용합니다. 코드 중복을 피하고 싶을 때: 상태 패턴을 사용하면 상태를 각각의 클래스로 캡슐화할 수 있으므로, 각 상태에 따른 행동을 재상용 할 수 있고 코드 중복을 줄일 수 있습니다. 상태 전이 로직을 간결하게 만들고 싶을 때: 상태 패턴을 사용하면 상태와 행동을 각각의 클래스로 분리할 수 있으므로, 상태 전이 로직을 더 간결하고 유지 관리하기 쉽게 만들 수 있습니ㅏㄷ. 종류 State Pattern 자체는 특정한 "종류"로 분류 되지 않으며, 대신 상황과 요구 사항에 따라 구현됩니다. 상태 패턴의 구현은 다음과 같은 두..
Strategy Pattern 사용시점 여러 알고리즘 중 선택 가능할 때: 같은 문제를 해결하는 데 여러 가지 방법이 있을때, 알고리즘을 쉽게 변경하거나 확장하고자 할 때 사용 합니다. 알고리즘 변경이 클라이언트 고트에 영향을 미치지 않아야 할 때: 전략 패턴을 사용하면 알고리즘을 변경해도 클라이언트 코드를 변경할 필요가 없게 됩니다. 클래스의 행위를 동적으로 변경하고 싶을 때: 실행 중에 동적으로 특정 행위를 변경하고자 할 때 사용할 수 있습니다. 종류 Strategy Pattern 자체는 특정한 "종류"가 있는 것이 아니라, 알고리즘의 행동을 인터페이스로 정의하고, 이를 구현하는 여러 전략 클래스를 제공하는 구조입니다. 정렬 알고리즘을 캡슐화한 전략(버블 정렬, 퀵 정렬, 병합 정렬 등) 할인 정책을..