Handler에게 메뉴 기능 위임
여기서부터
jdk 가 디버깅 모드 실행함
일반 모드에서는 break point 무시됨. 디버그 모드에서만 실행함
MEMBERHANDLER 에게 메뉴 기능을 위임 하는데 ,, ,!
문제점 :
Handler 클래스를 작성하고 개발자가 어떤 이름으로 메서드를 만드느냐에 따라 App에게 호출하는 코드가 달라진다.
=> 개발자가 같은 이름으로 메서드를 만들면 되는것이 아닌가,,/?
=>강제성이 없어 개발자의 선의에 기댈 수 밖에 없다 .
=> 엔지니어링 공학세계에서 선의에 기대는 것은 의미가 없다 . ..
=> 클래스 사용법을 특정방식으로 강제할 수 있는 문법이 필요하다.
=> 인터페이스 (Interface) 규칙 :객체사용규칙을 정하는 문법(여기서의 객체: 클래스) (객체는 클래스(메서드묶음), 인스턴스, 메서드 모두 될 수 있음. 문맥에 따라 판단해야함)
-클래스 사용 규격
인터페이스의 이점
- 구현의 일관성, 통일성
- 사용의 일관성
=> 대체가 쉽다.
17. Handler의 사용 규칙을 인터페이스로 정하기
+퍼블릭은 안 적어두 기본이 퍼블릭임
핸들러에 정의 되지 않은 메서드는 위에 핸들러로 만든 new 인스턴스에 쓸 수 없다.
인스턴스 목록을 다루는 코드를 별도의 클래스로 분리
MemberHandler : 사용자 ui & 인스턴스 보관 두개의 역할을 하는 중이기때문에 ,,,
업무를 더 전문화시켜서 분리 => 재사용성이 좋아짐.
아래 두개로 분리. 핸들러가 list를 사용하도록 설정.
1.MemberHandler : 사용자 UI
2. MemberList : 인스턴스 보관 코드를 별도의 클래스로 분리(encapsulation)
encapsulation
(클래스로 분리한다 = 보관 방법을 감춘다. )
=>멤버핸들러는 보관방법을 알 필요가 없음, => 보관방법을 쉽게 변경할 수 있다. => 코드 변경이 쉽다. = >유지보수가 쉽다. 다른 프로젝트에서 재사용하기가 쉽다!
foreach 배열의 처음부터 끝까지 반봅
for(int i = 0; i < arr.length; i++)
for (Member m : arr)
private void increase() {
//기존 배열보다 50% 큰 배열을 새로 만든다.
Board[] arr = new Board[boards.length+(boards.length >> 1)]; // 나누기 2 = >> 1
//기존 배열의 값을 새 배열로 복사한다.
for(int i = 0; i < boards.length; i++) {
arr[i] = boards[i];
}
// boards 레퍼런스가 새 배열을 가리키도록 한다.
boards = arr;
//System.out.println("배열확장: " + boards.length);
}
//복제해서 담아서 리턴
public Member[] list() {
//리턴할 값을 담을 배열 생성
Member[] arr = new Member[this.length];
//원본 배열에서 입력된 인스턴스 주소를 꺼내 새 배열에 담는다.
for (int i = 0; i < this.length; i++) {
arr[i] = this.members[i];
}
//새 배열을 리턴한다.
return arr;
}
public Member get(int no) {
for (int i = 0; i < this.length; i++) {
Member m = this.members[i];
if (m.getNo() == no) {
return m;
}
}
return null;
}
생성된 배열은 늘릴 수 없음
새로 만들어서 복사해야됨
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-38일차(6월19일)] - 웹프로그래밍 19일차 (0) | 2023.06.19 |
---|---|
[NC7기-37일차(6월16일)] - 웹프로그래밍 18일차 (0) | 2023.06.16 |
[NC7기-35일차(6월14일)] - 웹프로그래밍 16일차 (0) | 2023.06.14 |
[NC7기-34일차(6월13일)] - 웹프로그래밍 15일차 (0) | 2023.06.13 |
[NC7기-33일차(6월12일)] - 웹프로그래밍 14일차 (2) | 2023.06.12 |