Interface Auth
public interface Auth {
//권한
void execute();
}
UI AbstractUI
// abstract = 추상클래스 // implement는 interface 상속
//추상클래스를 interface로 한번더 빼준다 (interface가 더 유연하니까)
public abstract class AbstractUI implements Auth {
private Scanner scanner;
public void print(String msg){
System.out.println(msg);
}
public int inputInt(String msg){
System.out.println(msg);
return Integer.parseInt(scanner.nextLine());
}
}
기능 객체
public class CreateAuth extends AbstractUI{
@Override
public void execute() {
print("하하하");
}
}
public class ReadAuth extends AbstractUI{
@Override
public void execute() {
print("Read");
}
}
public class UpdateAuth extends AbstractUI{
@Override
public void execute() {
print("카카");
}
}
사용자
public class Employee {
private Auth[] auths;
public Auth[] getAuths() {
return auths;
}
public Employee() {
this.auths = new Auth[2];
auths[0] = new CreateAuth();
auths[1] = new ReadAuth();
}
@Override
public String toString() {
return "Employee{" +
"auths=" + Arrays.toString(auths) +
'}';
}
}
Main
public class Main {
public static void main(String[] args) {
Employee employee =new Employee();
Auth[] Arr = employee.getAuths();
for (int i = 0; i <Arr.length ; i++) {
Arr[i].execute();
}
}
}
⭐결과
하하하
Read
interface 활용 <3단 구현>에서 설명했던 부분을 코드화 시켜봤습니다
여기서 보면 사용자는 interface 만을 보고 현재 형식은
interface Auth 가 있고 추상 메서드인 Auth를 상속해주고 있습니다 그리고 기능 객체들은 AbstractUI를 상속하고 있고 각 기능 객체들은 interface의 execute를 Override를 해주고 있습니다 그래서 사용자는 자신이 원하는 기능만을 가질 수 있게 되었습니다 그림으로 볼 때는 쉽게 이해했는데 막상 코드 로보니 처음에는 응....? 하고 30분을 코드만 보고 있다 결국 같이 수업 듣는 분들과 토론하며 이해하는 데 성공했습니다 이해하고 보니 강사님이 설명해주신 것처럼 정말 유연하 다는 걸 알았습니다 그래서 결과적으로 강사님이 말씀하고자 하시는 건
⭐" 상속을 먼저 고려하지말고 인터페이스를 먼저 고려해봐 그리고 정말 똑같은 기능이 너무 많아서 상속을 쓰는 게 편할 거 같을 때 그때 가서 상속을 고려해" ⭐
이것이 가장 핵심이었던것같습니다
'개발자 성장 일지' 카테고리의 다른 글
2022.03.18 입출력 속도 (0) | 2022.03.20 |
---|---|
2022.03.17 수업 정리< 입출력 용어 정리 > (0) | 2022.03.20 |
2022.03.16 Interpace 활용 <3단 구현> (0) | 2022.03.16 |
2022.03.16 복습 뱀 게임 (0) | 2022.03.16 |
2022.03.15 퀴즈 만들기 (0) | 2022.03.15 |