일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 싱글톤
- assertThrows
- 스프링 부트
- 스프링 부트 기본
- @Configuration
- JPA
- 스프링 빈
- 스프링 부트 입문
- jdbc
- kafka
- Effective Java
- 필드 주입
- db
- DIP
- DI
- SQL
- resultMap
- thymeleaf
- sqld
- mybatis
- assertThat
- 스프링 프레임워크
- 스프링부트
- 스프링 컨테이너
- Javascript
- spring
- java
- springboot
- 스프링
- 생성자 주입
- Today
- Total
목록Language (90)
선 조치 후 분석

중재자 (Mediator) 패턴객체들 간의 의사소통 하는 방법을 캡슐화하여 객체 간의 의존성(결합도)을 낮추는 패턴객체 간의 중간 의사소통 담당자(중재자)를 통해 객체 간의 소통을 캡슐화하는 방법객체 간의 직접적인 상호작용보다 중자를 두어 간접적으로 상호작용 하도록 하는 것컴포넌트 사이의 M:N의 의존관계가 중재자와의 M:1의 의존관계가 되므로 결합도 감소구조Mediator : Colleague 객체 간의 상호참조를 위한 인터페이스. 클라이언트 등록, 실행등의 메소드 정의Colleague : 다른 Colleague와의 상호참조를 위한 인터페이스ConcreteMediator : Mediator 구현 클래스, Colleague 간의 상호참조를 조정ConcreteColleage : Colleage 구현 클래스..

반복자 (Iterator) 패턴 집합 객체 내부 구조를 노출시키지 않고 순회하는 방법을 제공하는 패턴 반복자 패턴의 본질은 기반이 되는 표현을 노출시키지 않고 연속적으로 객체 요소에 접근하는 방법을 제공하는 것 즉, aggregate (집합체) 유형에 무관한 동일 순차 접근 방법을 제공하는 것이다 aggregate란 반복자 객체를 생성하기 위한 인터페이스를 정의하는 것이고, iterator란 요소에 접근할 수 있고 순회할 수 있는 인터페이스를 정의하는 것 이러한 반복자 패턴을 사용하면 집합 객체를 순회하는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. 구조 Iterator : 집합체의 요소들을 순서대로 검색하기 위한 인터페이스 정의 ConcreateIterator - Iterato..

인터프리터 (Interpreter) 패턴자주 등장하는 문제를 간단한 언어로 정의하고 재사용하는 패턴인터프리터의 목적은 자주 사용되는 특정한 문법적 규칙이 존재한다면, 이를 일련의 규칙을 통해 언어/문법으로 규격화하여 해석하는 목적을 가지는 패턴 (e.g : 정규표현식) 구조Context : Expression에서 사용하는 모든 데이터들이 저장되어 있는 공간Expression : 일련의 규칙을 계산하여 결과값을 반환TerminalExpression : Expression을 포함하지 않고, 계산된 결과를 반환 (종료를 포함 - 더 이상 다른 문자로 치환될 수 없는 종점 문자를 의미)NonTerminalExpression : Expression을 참조하여, 종료를 하지 않고 다음 규칙으로 값을 넘기는 역할 (..

커맨드 (Command) 패턴요청을 캡슐화하여 호출자(Invoker)와 수신자(Receiver)를 분리(의존성 제거) 하는 패턴 사용하는 이유?호출자(Invoker) 객체가 수신자 (Receiver) 객체의 기능을 직접 호출한다면, 호출자에서 응답자 메소드를 호출하는 부분을 수정하거나 응답자의 코드가 수정되면 한쪽이 수정되더라도 양쪽 모두 수정이 되는 의존도가 높은 상태이다. 즉, 이 2개의 객체간 의존성을 제거하고 유연성을 확복하기 위함이다.구조Invoker : Command에 기능을 실행해달라고 요청하는 호출자 클래스Command : ConcreateCommand의 실행 기능에 대한 인터페이스로 실행은 execute, 취소는 undo 같은 메소드로 선언ConcreateCommand : 실제로 실행되는..

플라이웨이트 (Flyweight) 패턴객체를 가볍게 만들어 메모리 사용을 줄이는 목적을 가진 패턴자주 변하는 속성과 변하지 않는 속성을 분리하고 재사용하여 메모리 사용을 줄이는 구조를 설계하는 패턴주로 비교적 많은 인스턴스를 가지고 있는 애플리케이션에 사용되는 패턴인스턴스가 많으면 메모리를 잡아먹고 OOM (Out Of Memory) 문제가 발생할 수 있기에 이를 예방하기 위함공통으로 사용하는 클래스(Flyweight)를 생성하는 팩토리 클래스(Flyweight Factory)를 만들어, 인스턴스를 최초 1개만 생성하고 공유하여 재사용 구조Flyweight : 공유하여 사용하는 클래스 또는 APIFlyweight Factory : 인스턴스를 생성 또는 공유 (공장 역할)Client : Flyweight ..

퍼사드 (Facade) 패턴복잡한 서브 시스템의 의존성을 최소화하기 위한 목적을 가지는 패턴클라이언트가 사용해야 하는 복잡한 서브 시스템의 의존성을 간단한 인터페이스로 추상화할 수 있다고 한다.어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공퍼사드 패턴의 궁극적인 목표는 '객체 간의 의존성을 느슨하게 만드는 것'이다 퍼사드 (Facade) 패턴을 사용하기 좋은 시기시스템이 너무 복잡할 때간단한 인터페이스를 통해 복잡한 시스템을 접근하도록 하고 싶을 때시스템을 사용하고 있는 외부와 결합도가 너무 높을 때, 의존성을 낮추기 위할 때 Facade : 서브시스템 기능을 편리하게 사용할 수 있도록 하기 위해 여러 시스템과 상호 작용하는 복잡한 로직을 재정리해서 높은 레벨의 인터페이스를 구성한다...