변경 국부성, Locality of Change
변경을 할 때 제한된 부분만 개발하는 방법.
public Criteria(Criteria other,int tot) {//넘겨야하는 객체안에서 변경사항을 관리하는 방법, 객체 안의 생성자에서 생성자의 변경점을 관리함.
this.pageNo = other.pageNo;
this.amount = other.amount;
calc(tot);
}
부모 클래스의 생성자를 객체를 받게끔 해놓고 자식 클래스로 이동한다.
자식클래스에 부모 생성자를 이용해서 기존 생성자를 받아주고, 변경된 점만 따로 받아낸다.
@Data
@NoArgsConstructor
public class SearchCriteria extends Criteria {
private String type;
private String keyword;
public String[] getTypeArr() {
return type == null ? new String[] {} : type.split("");
}
public SearchCriteria(SearchCriteria other,int tot) {//넘겨야하는 객체가 상속관계일때 사용하는 방법, 객체 안의 생성자에서 생성자의 변경점을 관리함.
super(other,tot);
this.type = other.type;
this.keyword = other.keyword;
}
public SearchCriteria(int pageNo, int amount, String type, String keyword) {
super(pageNo, amount);
this.type = type;
this.keyword = keyword;
}
}
다형성에 의해 자식 객체는 부모 타입으로 프로모션 되므로, 생성자를 이어받는데 문제는 없고, 객체의 생성자 부분만 수정하면 되므로 굉장히 용이하다.
@GetMapping("/list")
public void list(SearchCriteria criteria,Model model) {
Pair<List<ReplyVO>, Integer> listReplyWithTot = service.getPostByPaging(criteria);
model.addAttribute("list", listReplyWithTot.getFirst());
model.addAttribute("pageMaker", new SearchCriteria(criteria,listReplyWithTot.getSecond()));
}
'JAVA-Basic' 카테고리의 다른 글
JVM 할당 CPU, Memory 확인하기 (0) | 2021.01.01 |
---|---|
다시보는 객체지향언어의 특징 (0) | 2020.09.24 |
제네릭을 이용한 필요한 클래스들의 모듈화 (0) | 2020.09.10 |
설...계? (0) | 2020.08.28 |
디버깅 (0) | 2020.08.28 |