ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] λ””μžμΈ νŒ¨ν„΄(Proxy νŒ¨ν„΄)
    Android/Java 2021. 5. 14. 01:28
    λ°˜μ‘ν˜•

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

    • 클래슀λ₯Ό 생성 μ‹œμ— κ°€λ²Όμš΄ μž‘μ—…μ— λŒ€ν•œ λ©”μ†Œλ“œλŠ” μ‹€ν–‰ν•˜λ˜, 무거운 μž‘μ—…μΌ 경우 λ‹€λ₯Έ 클래슀의 λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€,

    • 즉, λŒ€λ¦¬μΈ(Proxy) μ—­ν•  ν•  수 μžˆλŠ” ν΄λž˜μŠ€κ°€ κ°€λ²Όμš΄ μž‘μ—…μ„ μ‹€ν–‰ν•˜λ‹€κ°€ μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›λŠ”λ‹€λ˜κ°€, λ™μ˜μƒ μž¬μƒ μ‹œμ—λŠ” μ£Όμš” ν΄λž˜μŠ€κ°€ μ‹€ν–‰ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

    • Proxy νŒ¨ν„΄μ„ μ‚¬μš©ν•¨μœΌλ‘œμ¨ 무거운 μž‘μ—…μ„ ν•΄μ•Όν•  κ²½μš°μ—λ§Œ 클래슀λ₯Ό μƒμ„±ν•˜μ—¬ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


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

    public interface Scorer {
        void multipleChoice();
        void shortAnswer();
    }

    Scorer μΈν„°νŽ˜μ΄μŠ€λŠ” 객관식과 주관식을 채점할 수 μžˆλŠ” 채점관을 λœ»ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. 객관식은 μƒλŒ€μ μœΌλ‘œ 정닡이 있으면 μ‰½κ²Œ 채점할 수 μžˆμ§€λ§Œ, μ£Όκ΄€ 식은 주관이 λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ— μ€‘μš”ν•˜κ²Œ 평가 기쀀을 μ„Έμ›Œ 채점해야 ν•©λ‹ˆλ‹€.

    public class Professor implements Scorer{
    
        @Override
        public void multipleChoice() {
            System.out.println("Professor score multiple choice");
        }
    
        @Override
        public void shortAnswer() {
            System.out.println("Professor score short answer");
        }
    }
    
    public class Assistant implements Scorer{
    
        Professor professor;
    
        @Override
        public void multipleChoice() {
            System.out.println("assistant score multiple choice");
        }
    
        @Override
        public void shortAnswer() {
            if(professor == null){
                professor = new Professor();
            }
            professor.shortAnswer();
        }
    }

    Scorer μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 클래슀 2개λ₯Ό μƒμ„±ν•˜μ—¬ ν•˜λ‚˜λŠ” 쑰ꡐ, κ΅μˆ˜μ— ν•΄λ‹Ήν•˜λŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€.
    Assistant ν΄λž˜μŠ€μ—μ„œ κ°κ΄€μ‹μ˜ 경우 쑰ꡐ가 채점을 ꡐ수 λŒ€λ¦¬μΈ 자격으둜 μˆ˜ν–‰ν•˜μ§€λ§Œ,주관식 같은 κ²½μš°λŠ” Professor 클래슀λ₯Ό μƒμ„±ν•˜μ—¬ Professor 클래슀의 λ©”μ†Œλ“œλ‘œ μ‹€ν–‰ν•˜λ„λ‘ λ§Œλ“­λ‹ˆλ‹€.

    public class Main{
        public static void main(String[] args) {
            ArrayList<Scorer> scorers = new ArrayList<>();
            scorers.add(new Assistant());
            scorers.add(new Assistant());
            scorers.add(new Assistant());
    
            scorers.forEach(scorer -> {
                scorer.multipleChoice();
                scorer.shortAnswer();
                System.out.println();
            });
            /**
             * assistant score multiple choice
             * Professor score short answer
             * 
             * assistant score multiple choice
             * Professor score short answer
             * 
             * assistant score multiple choice
             * Professor score short answer
             */
        }
    }

    λ‹€μŒμ€ μ‹€ν–‰ 결과둜 μƒλŒ€μ μœΌλ‘œ κ°„λ‹¨ν•œ μž‘μ—…μΈ 객관식 채점은 쑰ꡐ ν΄λž˜μŠ€κ°€ λŒ€λ¦¬μΈμœΌλ‘œ μˆ˜ν–‰ν•˜κ²Œ 되고, μ€‘μš”ν•œ 주관식 같은 κ²½μš°λŠ” κ΅μˆ˜κ°€ μ±„μ ν•˜λ„λ‘ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이처럼 Proxy νŒ¨ν„΄μ„ μ‚¬μš©ν•¨μœΌλ‘œμ¨ 주관식 채점할 κ²½μš°κ°€ μ—†λ‹€λ©΄ μƒλŒ€μ μœΌλ‘œ Professor 클래슀λ₯Ό 생성할 ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    λ°˜μ‘ν˜•
Designed by Tistory.