데코레이터 패턴 (Decorator Pattern) 객체에 새로운 행동을 동적으로 더할수 있는 패턴으로 상속보다 훨씬 유연하게 기능을 확장할 수 있다는 장점이 있습니다. 마트료시카 인형 안에는 인형이.. 인형 안에 또 인형..이 있듯이, 데코레이터 패턴을 사용하면 클래스 안에 클래스.. 클래스 안에 또 클래스가 감싸져 있습니다. 구조 그래서 패턴을 구성하는 각 요소는 그 자체로 직접 쓰일 수도 있고, 또는 데코레이터에 감싸져 쓰일 수도 있습니다. 특징 한 객체를 여러 개의 데코레이터로 감쌀 수 있습니다. (마트료시카 인형처럼요!) 런타임에서도 객체에 필요한 데코레이터를 동적으로 마음껏 적용할 수 있습니다. ConcreteComponent에 새로운 행동을 동적으로 추가할 수 있습니다. 각 데코레이터 안에는..
옵저버 패턴(Observer Pattern) 한 객체의 상태가 바뀌면 그 객체를 관찰(구독)하고 있던 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 패턴입니다. 옵저버 패턴을 사용해 일대다(one-to-many)의 의존성을 정의할 수 있습니다. ex) java.swing 라이브러리: AbstractButton의 코드에서 옵저버 패턴의 필수품인 리스너들을 잔뜩 발견할 수 있습니다! 옵저버 패턴의 구조와 작동 방식 1. Publisher(출판사) 객체에서 중요한 데이터를 관리합니다. 2. Publisher의 데이터가 바뀌면 Publisher를 구독하고 있는 Subscriber(구독자) 객체들에게 바뀐 데이터의 내용이 전달됩니다. 3. Subscriber 객체들은 Subscriber 인터페이스의 구현체로..
전략 패턴 (Strategy Pattern, 객체 지향 패턴) 전략 패턴은 알고리즘 그룹을 정의하고 각 그룹을 별도 클래스로 캡슐화해서 각 그룹마다 서로 다른 알고리즘 객체로 변경할 수 있도록 도와주는 디자인 패턴입니다. 클라이언트에서 사용되는 알고리즘을 별도 클래스로 분리해 클라이언트에게 영향을 미치지 않고 독립적으로 변경할 수 있다는 장점이 있습니다. 객체 지향 디자인 원칙 책에 따르면 다음의 원칙에 따라 전략 패턴을 적용했을 때 보다 객체 지향적인 코드를 작성할 수 있습니다. 1. 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다. 코드에서 수시로 바뀔 수 있는 부분은 따로 다른 클래스로 뽑아서 캡슐화합니다. 바뀔 수 있는 부분을 분리하면, 바뀌지 않는 부분에 영향을 미치지 ..
JPA JPA(Java Persistence API)란 자바 진영의 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음을 의미한다. ORM ORM은 Object-Relational Mapping의 줄임말로 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계하되 ORM 프레임워크가 중간에서 둘을 매핑해준다. Java와 같이 대중적인 언어에는 대부분 ORM 기술이 존재한다. ORM을 사용하면 개발자는 데이터베이스의 데이터를 객체처럼 관리할 수 있기 때문에 객제 지향적인 코드를 작성할 수 있다. 비즈니스 로직에 더 집중할 수 있으며 SQL을 사용하는 것에 비해 직관적이고 유지보수가 쉬워진다. JPA의 성능 최적화 기능 1차 캐시와 동일성(Identity) 보장 같..
Dependency Lookup(DL) 의존관계를 외부에서 주입받는 걸 Dependency Injection(DI)이라 불렀다면, 직접 필요한 의존관계를 찾는 것은 Dependency Lookup(DL)이라고 부른다. ObjectFactory와 ObjectProvider가 스프링에서 DL 기능을 제공한다. ObjectFactory, ObjectProvider ObjectProvider: 지정한 빈을 컨테이너에서 대신 찾아주는 DL 서비스를 제공한다. ObjectFactory: ObjectProvider의 구 버전 클래스이다. 스프링 컨테이너에서만 사용 가능하다는 단점이 있다. @Autowired private ObjectProvider prototypeBeanProvider; public int logi..
스프링의 빈 스코프 빈 스코프란 빈이 존재할 수 있는 범위를 뜻한다. 싱글톤 기본 스코프로 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프. 프로토타입 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 컨테이너가 생성, 의존관계 주입, 초기화까지만 관여해 종료 메소드가 호출되지 않는다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고, 종료될 때까지 유지되는 스코프 application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 컴포넌트 스캔 자동 등록 @Scope("prototype") @Component public class HelloBean {}..
- Total
- Today
- Yesterday
- whatis
- 리눅스cron
- OnActivityForResult
- awk프로그램
- GithubAPI
- cat
- 백준
- 리눅스
- Baekjoon27211
- api문서
- Linux
- cron시스템
- GitHubAPIforJava
- E_FAIL
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- 백준27211
- 버추억박스에러
- linuxawk
- linux파일
- 쇼미더코드
- linuxtouch
- 버추억박스오류
- 사용자ID
- 백준27219
- linuxgedit
- 코테
- Baekjoon27219
- atq
- virtualbox
- baekjoon
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |