규제.
역할 : 어떤 클래스가 있고 그 클래스가 특정한 인터페이스를 사용한다면,
그 클래스는 반드시 인터페이스의 메소드를 구현해야한다.
잘 모르겠다. 간에 기별도 안온다.
개발자A, 개발자B가 계산기를 만든다고 생각해보자.
계산기를 만드는 도중에도 사용자들이 사용할 수 있게 해주기 위해,
가짜 계산기를 만들었다.
그리고 계산기를 다 만들고 난 후, 진짜 계산기(오른쪽)를 넣을려고하니,
calculatorDummy c = new CalculatorDummy();에 Calculator클래스를 대체할 수 없다.
왜냐하면, calculatorDummy의 인자는 (int first, int secon, int three) 이 세개를 받는데,
Calculator는 두개 밖에 받지 못하기 때문에,
현재 c.setOperands(10,20,30)이 대체될 수 없기 때문이다. (개발자들간의 소통의 문제로 인해)
위의 클래스는 간단하지만, 저런 대체될 클래스,객체들이 100개 1000개 있다면, 어떻게해야할 것인가,
그렇기 위해서,
개발자들 간에 약속을해서 Calculatable이라는 인터페이스를 구현을 해준다.
개인적인 생각이지만 쉽게, 갖춰야 할 옵션
(예를들어, 밖에 나갈때는 신발을 신는다는가.. 그리고 신발을 안신고 나갈려고 하는 순간 갑자기 헨드폰에서 존나 쌍욕이 들려온다고 생각해보자)
이렇게 생각하니, 감이오지 않는가? 안오면.. 미안합니다.
이 CalculatorDummy는 calculatable(인터페이스)를 옵션으로 장착한 후 인터페이스의 메소드를 구현해준다.
그 후 다시 Calculator을 만든 개발자는 같은 인터페이스를 장착함으로써,
(장착이 되면, 만약 두개의 인자를 받을려고 또 실수를 할 수 없게, 에러가 난다. 그렇기 때문에,
올바른 방향으로 나아갈 수 있다는.. )
벗어나지 않는 행동을 하지 않게 되었다는 ............ 이야기다 끝@!
그래도 혹시 감이 안온다면,, 여기 한번 들어보길 추천합니다.
'개발공부 > 자료구조' 카테고리의 다른 글
네트워크란? (0) | 2020.12.19 |
---|---|
제네릭이란?(자바 <> 이게 뭔가요?) (0) | 2020.12.15 |
Collections framework(list, set, map) (0) | 2020.12.11 |
Doubly linked list(양방향 연결 리스트) (0) | 2020.12.09 |
자료구조(Linked list) 구현 (0) | 2020.12.04 |