개발자 성장 일지

2022.03.16 Interpace 활용 <3단 구현> 코드로 보기

NEWDODORIPYO 2022. 3. 16. 19:56

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분을 코드만 보고 있다 결국 같이 수업 듣는 분들과 토론하며 이해하는 데 성공했습니다 이해하고 보니 강사님이 설명해주신 것처럼 정말 유연하 다는 걸 알았습니다  그래서 결과적으로 강사님이 말씀하고자 하시는 건

 

" 상속을 먼저 고려하지말고 인터페이스를 먼저 고려해봐 그리고 정말 똑같은 기능이 너무 많아서 상속을 쓰는 게 편할 거 같을 때 그때 가서 상속을 고려해" ⭐

 

이것이 가장 핵심이었던것같습니다