일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구현할 수 있다. 템플릿은, 모양자 중 동그라미를 그리는데 여러 색의 색연필을 사용하면 하나의 도형에 여러 색의 도형을 만들 수 있는 의미로 말할 수 있다. 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴이다. 사용 목적 구현하려는 알고리즘이 일정한 프로세스가 있다. (여러 단계로 나눌 수 있다.) 구현하려는 알고리즘이 변경 가능성이 클 때 사용한다. 템플릿 메소드 패턴의 단계 알고리즘을 여러 단계로 나눈다. 나눠진 알고리즘의 단계를 메소드로 선언한다. 알고리즘을 수행할 템플릿 메소드를 만든다. 하위 클래스에 나눠진 메소드들을 구현한다. 기본 설계 알고리즘을 각 operation1, 2..
기계, 기구등을 다른 목적으로 사용하기 위한 부가적인 기구를 말한다. Ex. 우리 나라는 전기를 220v 사용하는데, 110v 사용하는 나라로 여행을 갈 때면 어댑터가 필요하다. 기본 설계 Adaptee라는 알고리즘을 Adapter라는 기능을 통해서 원하는 기능으로 변형하는 것이다. 구체적인 예제 요구사항 두 수에 대한 다음 연산을 수행하는 객체를 만들어라. 수의 두 배의 수를 반환 : twiceOf(Float) : Float 수의 반(1/2)의 수를 반환 : halfOf(Float) : Float 구현 객체 이름은 'Adapter' Math 클래스에서 두 배와 절반을 구하는 함수는 이미 구현되어있다. 요구사항 설계 소스 //Math public class Math { public static doubl..
인터페이스 기능에 대한 선언과 구현의 분리를 말한다. 기능을 통로라고 말할 수 있다. Ex. //AInterface public interface AInterface { public void funcA(); } //AInterfaceImpl public class AInterfaceImpl implements AInterface { @Override public void funcA() { System.out.println("AAA"); } } //Main public static void main(String [] args) { AInterface aInterface = new AInterfaceImpl(); aInterface.funcA(); } 선언(AInterface)과 구현(AInterfaceIm..
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..
- Total
- Today
- Yesterday
- JPA
- 김영한
- springboot
- try catch finally
- jdk버전
- try with resources
- junit
- flatMap
- java8
- mustache
- 빌더 패턴
- Effective Java
- 연관관계
- ifPresent
- @Lazy
- package-private
- 스프링부트
- 복사 팩토리
- 이펙티브자바
- 팩토리 메소드 패턴
- 이펙티브 자바
- 점층적 생성 패턴
- java
- Spring
- 빈 순환 참조
- 정적팩터리메서드
- 인프런
- 생성자
- effectivejava
- 자바8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |