2023. 3. 14. 10:23ใJAVA/Effective JAVA
item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ.
" p.147. ์ด๋ํฐ"
[์ดํํฐ๋ธ ์๋ฐ] Item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ. (tistory.com)
[์ดํํฐ๋ธ ์๋ฐ] Item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item23. ํ๊ทธ ๋ฌ๋ฆฐ ํด๋์ค๋ณด๋ค๋ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ผ. ์ค์ฒฉ ํด๋์ค(nested class)๋ ๋ค๋ฅธ ํด๋์ค ์์ ์ ์๋ ํด๋์ค๋ฅผ ๋งํ๋ค. ์ค์ฒฉ ํด๋์ค๋ ์์ ์ ๊ฐ์ผ ๋ฐ๊นฅ ํด๋์ค์์
hyejin.tistory.com
๋น์ ์  ๋ฉค๋ฒ ํด๋์ค๋ ์ด๋ํฐ๋ฅผ ์ ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค๊ณ ํ๋ค.
์ด๋ ์ด๋ํฐ ํจํด์ด๋?
: ๊ธฐ์กด ์ฝ๋๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ก ๋ฐ๊ฟ์ฃผ๋ ํจํด์ ๋งํ๋ค.
์ฆ, ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ํจํด์ด๋ค.

ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ฅด์ง ์๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
Target
: ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๊ธธ ์ํ๋ ์ธํฐํ์ด์ค
Adaptee
: ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๊ณ ์๋ ์ธํฐํ์ด์ค
Adpater
: target ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค, ์ด๋ Adpatee์ ํจ์๋ฅผ ์ฌ์ฉํจ
Client
: Target ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ฒด
public class AdapterInJava
{
   public static void main(String[] args)
   {
      // ์ด๋ํฐ ํจํด์ ๋ํ์ ์ธ ์์ 
      try (InputStream is = new FileInputStream("number.txt");
          InputStreamReader isr = new InputStreamReader(is);
          BufferedReader reader = new BufferedReader(isr))
      {
         while (reader.ready())
         {
            System.out.println(reader.readLine());
         }
      }
      catch (IOException e)
      {
         throw new RuntimeException(e);
      }
   }
}InputStream, InputStreamReader, BufferedReader๊ฐ ์ด๋ํฐ ํจํด์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ์์ ๋ผ๊ณ ํ ์ ์๋ค.
public class MySet<E> extends AbstractSet<E>
{
   @Override
   public Iterator<E> iterator()
   {
      return new MyIterator();
   }
   
   @Override
   public int size()
   {
      return 0;
   }
   
   // ์ด๋ํฐ ํจํด
   private class MyIterator implements Iterator<E>
   {
      @Override
      public boolean hasNext()
      {
         return false;
      }
      
      @Override
      public E next()
      {
         return null;
      }
   }
}๊ทธ๋ฆฌ๊ณ MyIterator ์ญ์ ์ด๋ํฐ ํจํด์ ์ฌ์ฉํ ์์ ์ด๋ค.
๐ ์ ๋ฆฌ
์ด๋ํฐ ํจํด์ ๊ธฐ๋ฅ์ ๋ฌธ์ ์์ด ๋์ํ๋ ์ฝ๋๊ฐ ๋จ์ง ์ธํฐํ์ด์ค ์ฐจ์ด ๋๋ฌธ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ง์ด ์์ฉ๋๋ ํจํด์ด๋ค.
๋ํ ๊ธฐ์กด ์ฝ๋์ ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ๋ณด์  ์์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
์ด๋ํฐ ํจํด์ ์ค๋ฌด์์๋ ๋ง์ด ์ฌ์ฉ๋๋๋ฐ, ์ค๋๋ ๋ ๊ฑฐ์ ์ฝ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ ๋ ์ ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก ํธํ๋์ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ์ฝ๋๋ฅผ ๊ฒฐํฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋์ํ ์ ์๋๋ก ๋์์ค๋ค.