Delegation, 위임
Dec 17, 2018 조회수 91
다음 코드를 살펴봅시다.
public class MyStack<String> extends ArrayList<String> {
public void push(String element){
add(element);
}
public String pop(){
return remove(size()-1);
}
}
MyStack 클래스는 ArrayList를 상속받았습니다.
개발자의 의도는 ArrayList를 상속받음으로써, ArrayList의 메소드를 사용하여 Stack을 구현하고자 한 것입니다.
하지만 실제로 사용하지 않는 속성과, 메소드를 같이 상속 받게 됩니다.
이런 불필요한 속성들은 Stack의 무결성 조약인 FILO(First In Last Out) 조약을 위배합니다.
이와 같은 이유로 우리는 상속이 아닌 **위임(Delegagtion)**을 써야합니다.
<br/>
<hr/>
<br/>
위임을 사용한 다음 코드를 살펴봅시다.
public class MyStack{
ArrayList <String> array=new ArrayList<String>();
public void push(String element){
array.add(element);
}
public String pop(){
return array.remove(array.size()-1);
}
}
MyStack 클래스는 ArrayList를 상속 받지 않습니다.
MyStack 클래스는 ArrayList를 참조하고, 필요한 메소드만을 이용하여 Stack을 구현합니다.
이로 인하여, 불필요한 메소드를 상속받지 않게 됩니다.
이것을 위임이라고한다.
<br/>
<br/>
<br/>
<br/>
<br/>
'Delegation, 위임' 관련된 다른글
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.