Proxy Pattern vs Decorator Pattern 두 패턴 모두 기존에 존재하는 객체의 동일한 인터페이스를 이용해서 다양한 행동을 추가하기 위한 의도를 가지고 있다. Ex. MyClass라는 객체에 doAction()이라는 메소드가 있을 시, 다른 객체에서도 동일한 시그니처의 doAction() 메소드를 호출하여 MyClass의 doAction()을 실행하는 동시에 다른 행동을 추가해주는 것이다. 이런 측면으로 보면, 두 패턴이 동일하게 보일 수 있지만 '의도'에는 미묘한 차이가 있다. Proxy는 추가적인 '컨트롤'을 제공하는 것이고, Decorator는 추가적인 '기능'을 제공하는 것이다. Decorator MyClass 객체의 doAction()이 'mesung'을 출력하는 것이라면, ..
Adapter vs Bridge Adapter 패턴과 Bridge 패턴은 둘다 다른 객체에 대한 직접 접근 대신에 다른 우회적 방법으로 접근함으로써 유연성을 증대시킨다. 두 패턴의 차이 두 패턴의 가장 큰 차이는, 목적이 무엇인가?! Adapter는 이미 존재하는 두 인터페이스간의 불일치를 해결하려는 것이다. Bridge는 추상화 개념과 구현을 따로 만들고, 이들을 연결시키려는 것이 주 목적이다. Adapter는 두 클래스간의 종속성을 미리 에측하지 못하고 개발했을 경우 필요한 패턴이다. Bridge는 이미 사용자가 추상화 추상화 개념을 구현하는 방법이 여러가지이고 이들 각각이 독립적으로 진화할 수 있음을 파악한 상태에서 적용하는 패턴이다. Adapter 필요한 형태로 정해서 재활용한다. Adapter ..
Collection 객체는 여러 원소들을 담을 수 있는 자료구조를 뜻한다. 자료구조의 유형 Java에서의 자료구조 유형을 살펴보자. List : 순서가 있는 목록 Set : 순서가 중요하지 않는 목록 Queue : FIFO Map : Key & Value 형태로 되어 있는 목록 자료구조의 유형과 배열은 목록을 저장하는 개념으로는 동일하지만 큰 차이를 가지고 있다. 배열 : 정적 메모리 할당 자료구조 : 동적 메모리 할당 Collection의 Tree 구조 출처 : https://www.crocus.co.kr/1553 Java에서 Collection이란? Collection 이란? Collection 객체는 여러 원소들을 담을 수 있는 자료구조를 뜻한다 배열이 가장 기본적인 자료구조이며, DTO 또한 자료..
Error와 Exception https://it-mesung.tistory.com/69?category=830540 [Java 기초] Exception Exception Exception, Exception은 원하지 않거나 예기치 않은 이벤트로, 프로그램 런타임에 발생하여 프로그램 명령의 정상적인 흐름을 방해한다. Exception and Error Error : 오류 심각한 문제를 나타내므로,.. it-mesung.tistory.com Error와 Exception의 차이 Error(에러) 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것을 말한다. Exception(예외) 개발자의 잘못된 코딩 혹은 API 접근 실패로 인해 발..
다이나믹 프록시 런타임에 인터페이스 또는 클래스의 프록시 인스턴스 또는 클래스를 만들어 사용하는 프로그래밍 기법이다. 다이나믹 프록시 사용처 스프링 데이터 JPA 스프링 AOP Mockito 하이버네이트 lazy initialzation ... Mockito //MyRepository public interface MyRepository extends JpaRepository { } //MyService public class MyService { MyRepository myRepository; public MyService(MyRepository myRepository) { this.myRepository = myRepository; } public void rent(Book book) { Book s..
인터페이스가 없는 경우 프록시는 어떻게 만드는지 알아보자. 이 때는 라이브러리가 필요하다. (CGlib) CGlib cglib cglib 3.3.0 @Test public void di() { MethodInterceptor handler = new MethodInterceptor() { MyBookService myBookService = new MyBookService(); @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { if(method.getName().equals("rent")) { System.out.println("aaaa")..
들어가기에 앞서 final과 static에 대해서 간략히 살펴보자 https://it-mesung.tistory.com/86?category=830540 [Java 기초] static static static은 컴파일러에 의해 .java에서 .class 파일로 로드될 시 우선적으로 method 영역(static, class영역이라고도 부름) 메모리에 할당된다. 이런 이유로, 객체가 heap영역 메모리에 올라가기 전에 호출해.. it-mesung.tistory.com https://it-mesung.tistory.com/85?category=830540 [Java 기초] final final final의 효과 클래스나 메소드 혹은 변수에 final 제어자가 붙을 수가 있는데 각각 다음과 같은 제한이 생긴다..
데몬 스레드 일반 스레드의 작업을 돕는 보조 스레드이다. 일반 스레드가 종료되면 데몬 스레드는 자동으로 종료된다. 이 점을 제외하고는 일반 스레드와 동일하다. 데몬 스레드의 예 가비지 컬렉터, 워드프로세서 자동 저장, 화면자동개신 데몬 스레드는 무한루프를 이용해 항시 대기하고 있다가 특정 조건에 만족하면 작업을 수행하고 다시 대기상태에 있는다. 데몬 스레드 관련 메소드 boolean isDaemon() //해당 스레드가 데몬 스레드인지 확인한다. void setDaemon(boolean on) //파라미터 값이 true이면 스레드를 데몬스레드로 변경한다. setDeamon 메소드는 반드시 start()를 호출하기 전에 실행되어야 한다. 호출 후 실행되면 IllegalTrheadStateException이..
- Total
- Today
- Yesterday
- package-private
- java
- try catch finally
- @Lazy
- 빈 순환 참조
- 김영한
- java8
- 빌더 패턴
- mustache
- 이펙티브자바
- Spring
- flatMap
- Effective Java
- 자바8
- 점층적 생성 패턴
- 이펙티브 자바
- 정적팩터리메서드
- 스프링부트
- JPA
- try with resources
- 연관관계
- ifPresent
- jdk버전
- 인프런
- 생성자
- springboot
- effectivejava
- 팩토리 메소드 패턴
- junit
- 복사 팩토리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |