본문 바로가기

Software Design Pattern

Collection 을 설계하는 방법

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)