Collection 을 설계하는 방법
방법1. Object 기반 Container
public void addFront(Object data) {
head = new Node(data, head);
}
public Object front() {
return head.data;
}
static class Node {
Object data;
Node next;
Node(Object data, Node next) {
this.data = data;
this.next = next;
}
}
장점 : 모든 객체 타입을 하나의 컬렉션에 저장할 수 있다? -> 장점이 아니라 단점이다.
단점 :
1. 모든 객체 타입을 하나의 컬렉션에 저장할 수 있다.
2. 타입 안정성이 떨어진다.
실수로 다른 타입을 넣어도 컴파일 시간에 에러가 발생하지 않는다.
3. 값을 꺼낼 때 해당 타입으로 항상 캐스팅 해야 한다.(캐스팅 코드는 코드의 복잡도를 높인다)
방법2. Generic 기반 Container
장점 : 타입 안정성이 뛰어나기 때문에, 잘못된 타입이 들어가면
컴파일 에러가 발생하고, 꺼낼 때 캐스팅도필요 없다.
자바의 Generic : 코드를 생성하는 기술이 아니므로, 코드 메모리 부하도 없고, 성능 향상도 없다.(Obj-C)
'Software Design Pattern' 카테고리의 다른 글
컬랙션에 작용하는 두번째 예제 (0) | 2017.12.02 |
---|---|
반복자(Iterator) 패턴 (0) | 2017.12.01 |
공통성과 가변성의 분리의 원칙을 사용하는 GoF의 디자인 패턴 5가지 (0) | 2017.11.29 |
재귀적 합성을 사용한 설계 방법 (0) | 2017.11.28 |
메뉴, Composite 패턴 핵심 2가지 (0) | 2017.11.28 |