JAVA-Basic

클래스 생성자에 추가사항이 있을때의 관리방법.

Jungsoomin :) 2020. 9. 11. 14:25

변경 국부성, 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