ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] λ””μžμΈ νŒ¨ν„΄(Adapter νŒ¨ν„΄)
    Android/Java 2021. 1. 7. 20:19
    λ°˜μ‘ν˜•
    • 이 글은 "μΈν”„λŸ° Java λ””μžμΈ νŒ¨ν„΄" κ°•μ˜λ₯Ό λ“£κ³  κ³΅λΆ€ν•œ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μž‘μ„±ν•œ κΈ€μž…λ‹ˆλ‹€.

    Adapter νŒ¨ν„΄μ΄λž€?

    • ν•˜λ‚˜μ˜ 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹€λ₯Έ 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ‘œ λ³€ν™˜ν•  λ•Œ 주둜 μ“°λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.

    • μ–΄λŠ 정도 규λͺ¨κ°€ μžˆλŠ” λ‚΄λΆ€ μ‹œμŠ€ν…œμ—μ„œ μƒˆλ‘œμš΄ 클래슀λ₯Ό μ μš©ν•˜λ €κ³  μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ¨λ‘ μˆ˜μ •ν•˜λŠ” 것은 사싀상 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. 이럴 λ•Œ 기쑴의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹€λ₯Έ 클래슀의 μΈν„°νŽ˜μ΄μŠ€λ‘œ λ³€ν™˜ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

    • 이름 κ·ΈλŒ€λ‘œ μ „κΈ° μ–΄λŒ‘ν„°λΌκ³  μƒκ°ν•˜μ—¬ λ‹€λ₯Έ μ „κΈ°λ‚˜ 기계μž₯치λ₯Ό μ„œλ‘œ μ—°κ²°ν•΄μ„œ μž‘λ™ν•˜κ²Œ ν•΄μ£ΌλŠ” 도ꡬ인 κ²ƒμ²˜λŸΌ Adapter νŒ¨ν„΄λ„ λΉ„μŠ·ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

    • μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” Adapter νŒ¨ν„΄μ„ 자주 μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ex) ListView, RecyclerView ..


    Adapter νŒ¨ν„΄ μ‚¬μš©

    public interface IPhone {
        void printIModel();
        void printIVersion();
    }
    
    public interface Galaxy {
        void showGModel();
        void showGVersion();
    }

    λ‹€μŒκ³Ό 같이 IPhone μΈν„°νŽ˜μ΄μŠ€μ™€ Galaxy μΈν„°νŽ˜μ΄μŠ€κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.

    public class MyIPhone implements IPhone{
    
        @Override
        public void printIModel() {
            System.out.println("IPhone 12λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€");
        }
    
        @Override
        public void printIVersion() {
            System.out.println("IOS 14.3");
        }
    }
    public class MyGalaxy implements Galaxy {
    
        @Override
        public void showGModel() {
            System.out.println("κ°€λŸ­μ‹œ 20λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€");
        }
    
        @Override
        public void showGVersion() {
            System.out.println("Android 11");
        }
    }

    각 μΈν„°νŽ˜μ΄μŠ€λ₯Ό implementν•œ MyIPhone, MyGalaxy ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.

    기쑴의 μ‹œμŠ€ν…œ μΈν„°νŽ˜μ΄μŠ€κ°€ IPhone이라고 ν•˜κ³  이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ΄μš©ν•œ Galaxy 클래슀λ₯Ό μ‚¬μš©ν•˜κ³  싢을 λ•Œ Adapter νŒ¨ν„΄μ„ μ΄μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    public class GalaxyAdapter implements IPhone {
    
        private Galaxy galaxy;
    
        public GalaxyAdapter(Galaxy galaxy) {
            this.galaxy = galaxy;
        }
    
        @Override
        public void printIModel() {
            galaxy.showGModel();
        }
    
        @Override
        public void printIVersion() {
            galaxy.showGVersion();
        }
    }
    public class Main{
        public static void main(String[] args){
    
            MyIPhone iPhone = new MyIPhone();
            iPhone.printIModel();
            iPhone.printIVersion();
    
            MyGalaxy gallery = new MyGalaxy();
            GalaxyAdapter adapter = new GalaxyAdapter(gallery);
            adapter.printIModel();
            adapter.printIVersion();
    
        }
    }

    μ‹€ν–‰ κ²°κ³Ό

    • ν˜Έν™˜μ„±μ΄ μ—†λŠ” IPhone μΈν„°νŽ˜μ΄μŠ€λ₯Ό 가지고 MyGalaxy에 μ‚¬μš©ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œ λ³€ν™˜ν•˜λŠ” κ²°κ³Όλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
    λ°˜μ‘ν˜•
Designed by Tistory.