3. 오브젝트와 의존관계1
1. 의존관계
예시 코드
package spring.hellospring;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class Payment {
private Long orderId;
private String currency;
private BigDecimal foreignCurrencyAmount;
private BigDecimal exRate;
private BigDecimal convertedAmount;
private LocalDateTime validUntil;
public Payment(Long orderId, String currency, BigDecimal foreignCurrencyAmount, BigDecimal exRate, BigDecimal convertedAmount, LocalDateTime validUntil) {
this.orderId = orderId;
this.currency = currency;
this.foreignCurrencyAmount = foreignCurrencyAmount;
this.exRate = exRate;
this.convertedAmount = convertedAmount;
this.validUntil = validUntil;
}
// getter, setter, toString
}2. 관심사의 분리 (Separation of concerns)
리팩터링
메서드 추출(extract method) 리팩터링
3. 상속을 통한 확장
고정된 환율을 가져오는 SimpleExRatePaymentService 를 만들어보자.
SimpleExRatePaymentService 를 만들어보자.문제점
4. 클래스 분리
여기서 한발자국 더 나아가보자, PaymentService 입장에서 환율을 가져오는 로직은 필수적이다 때문에, 해당 정책을 관리하는 인스턴스 변수를 만들고 생성자를 통해서 초기화해주자.
PaymentService 입장에서 환율을 가져오는 로직은 필수적이다 때문에, 해당 정책을 관리하는 인스턴스 변수를 만들고 생성자를 통해서 초기화해주자.문제점
5. 인터페이스 도입
문제점
6. 관계설정 책임의 분리
인터페이스를 사용했을 때 단점


7. 오브젝트 팩토리

8. 원칙과 패턴
원칙은 객체지향의 원칙, 패턴은 디자인 패턴을 의미한다.
개방-폐쇄 원칙(Open-Closed Principle)

높은 응집도와 낮은 결합도(High Coherence and low coupling)
전략 패턴(Strategy Pattern)
제어의 역전(Inversion of Control)


Last updated