자원을 직접 명시하지 말고 의존 객체 주입을 사용하라. 하나의 클래스에서 다른 자원에 의존하는 경우가 많습니다. 또한 해당 클래스가 유틸리티 클래스라면 싱글톤이나 정적 클래스로 사용되는 경우가 많습니다. 💡 예제 코드 // 상품 클래스 @Data public class Product { private String name; private int price; public boolean isPayable(int money) { return price
인스턴스화를 막으려거든 private 생성자를 사용하라. static 메서드와 static 필드만을 담은 유틸리티 클래스는 객체 지향과 거리가 멀지만, 쓰임새가 있습니다. 하지만 해당 클래스는 abstract 클래스로 만들어서 상속 받아서 인스턴스를 만들 수 있기 때문에 인스턴스를 만드는 것을 막을 수 업습니다. 아무런 생성자를 만들지 않는 경우에는 컴파일러가 기본적으로 매개변수가 없는 public 생성자를 만들어 주기 때문에 그런 경우에는인스턴스를 만들 수 있습니다. 따라서 인스턴스화를 막기 위해서는 명시적으로 private 생성자를 추가해야 합니다. 인스턴스화 막기 💡 추상 클래스로 만드는 것은 인스턴스화를 막을 수 없습니다. 하위 클래스를 만들어 인스턴스화를 하면 그만입니다. 추상 클래스를 본 사용..
이전 내용 앞에서 정적 팩토리 메서드를 사용하여 객체를 생성할 때 매개변수가 많을수록 적절히 대응하기 어렵다는 점을 느끼게 되었습니다. 책에서는 여러 매개변수를 받는 생성자를 만들어 놓았지만 저는 불편하여 빌더패턴을 사용했습니다. 점층적 생성자 패턴 💡 예제 코드 아래 예제코드처럼 점층적 생성자 패턴을 사용할 수 있지만, 매개변수가 많아지면 생성자를 그만큼 많이 만들어줘야하고 클라이언트에서 객체를 생성하는 시점에 값의 의미가 무엇인지 헷갈릴 것이고, 매개변수가 몇 개인지도 주의해서 봐야할 것입니다. public class User { private int id; private String name; private int age; private String phoneNumber; private String..
생성자 대신 정적 팩토리 메서드를 고려하라. 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자입니다. 하지만 전통적인 수단 이외에 클래스는 생성자와 별도로 정적 팩토리 메서드를 제공할 수 있습니다. 위의 말은 크게 와닿지 않습니다. 조금 더 쉽게 표현을 해보자면 우리(?)는 지금까지 new 키워드를 사용하여 인스턴스를 생성하곤 했습니다. 이 방법 외에도 static 메서드를 사용하여 생성자를 생성하고 반환할 수 있습니다. 그래서 static 메서드를 이용해서 생성자를 생성하고 반환하면 뭐가 좋을까? 💡이름을 가질 수 있습니다. 아래 예제는 new 키워드를 사용하여 객체를 생성하고 있습니다. new 키워드를 사용하여 객체를 생성하고 있지만 어떤 용도로 객체 생성되어 사용되는지 코드로..
- Total
- Today
- Yesterday
- polling publisher spring boot
- 레이어드 아키텍처란
- pipe and filter architecture
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot excel download oom
- spring boot redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot redisson destributed lock
- microkernel architecture
- pipeline architecture
- transactional outbox pattern
- 공간 기반 아키텍처
- 람다 표현식
- redis 대기열 구현
- java ThreadLocal
- spring boot excel download paging
- spring boot redisson 분산락 구현
- @ControllerAdvice
- spring boot redisson sorted set
- java userThread와 DaemonThread
- spring boot poi excel download
- service based architecture
- space based architecture
- redis sorted set으로 대기열 구현
- transactional outbox pattern spring boot
- redis sorted set
- 서비스 기반 아키텍처
- 자바 백엔드 개발자 추천 도서
- spring boot 엑셀 다운로드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |