ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] λ””μžμΈ νŒ¨ν„΄(Template νŒ¨ν„΄)
    Android/Java 2021. 5. 17. 22:13
    λ°˜μ‘ν˜•

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

    • λŒ€ν•™μƒμ΄λΌλ©΄ PPT둜 λ°œν‘œν•œ κ²½ν—˜μ€ μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. PPT λ°œν‘œ 자료λ₯Ό 직접 κΎΈλ©°μ„œ λ§Œλ“œλŠ” 학생도 μžˆμ„ 수 μžˆκ² μ§€λ§Œ, λ””μžμΈ 감각이 μ—†λŠ” μ‚¬λžŒμ—κ²ŒλŠ” μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ•Œ, λŒ€λΆ€λΆ„μ€ PPT ν…œν”Œλ¦Ώμ„ κ²€μƒ‰ν•˜μ—¬ ν…œν”Œλ¦Ώμ— λ‚΄μš©λ§Œ μΆ”κ°€ν•˜λŠ” λ°©μ‹μœΌλ‘œ 자료λ₯Ό λ§Œλ“€ κ²ƒμž…λ‹ˆλ‹€.

    • 이처럼 Template νŒ¨ν„΄μ΄λž€ μ „λ°˜μ μΈ κ³Όμ • 같은 큰 ν‹€λ§Œ 주어지고, 세뢀적인 λ©”μ†Œλ“œλ“€μ€ μ›ν•˜λŠ” μŠ€νƒ€μΌμ— 맞게 κ΅¬ν˜„ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.

    • μ „λ°˜μ μΈ κ³Όμ •μ—μ„œ κ³΅ν†΅λœ μ ˆμ°¨κ°€ μžˆμ„ 경우 μ‚¬μš©ν•˜λ©΄ 효과적인 νŒ¨ν„΄μž…λ‹ˆλ‹€.


    Template μ‚¬μš©

    public abstract class Movie {
        protected abstract void connectMovieServer();
        protected abstract void downloadMovieInServer();
        protected abstract void playMovie();
    
        public void initMovie(){
            connectMovieServer();
            downloadMovieInServer();
            playMovie();
        }
    }

    λ‹€μŒ ν΄λž˜μŠ€λŠ” Movie 클래슀둜 λ™μ˜μƒμ„ λ³΄λŠ” 과정듀을 λ©”μ†Œλ“œλ‘œ κ΅¬ν˜„ν•΄λ†“μ€ μΆ”μƒν΄λž˜μŠ€μž…λ‹ˆλ‹€. λ™μ˜μƒ λ³΄λŠ” 과정은 λ¨Όμ € μ„œλ²„μ™€ μ—°κ²°μ‹œμΌœμ£ΌλŠ” λ©”μ†Œλ“œμΈ connectMovieServerλ₯Ό μ‹€ν–‰ν•˜κ³ , μ„œλ²„λ‘œλΆ€ν„° λ™μ˜μƒμ„ λ‹€μš΄λ°›λŠ” λ©”μ†Œλ“œμΈ downloadMovieInServerλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. λ‹€μš΄κΉŒμ§€ μ™„λ£Œλ˜μ—ˆλ‹€λ©΄, playMovie λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ λ™μ˜μƒμ„ μ‹œμ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    public class Youtube extends Movie{
        @Override
        protected void connectMovieServer() {
            System.out.println("Youtube connect Movie server");
        }
    
        @Override
        protected void downloadMovieInServer() {
            System.out.println("Youtube download Movie In server");
        }
    
        @Override
        protected void playMovie() {
            System.out.println("Youtube play Movie");
        }
    }
    
    public class Facebook extends Movie{
        @Override
        protected void connectMovieServer() {
            System.out.println("Facebook connect Movie Server");
        }
    
        @Override
        protected void downloadMovieInServer() {
            System.out.println("Facebook downloadMovie in server");
        }
    
        @Override
        protected void playMovie() {
            System.out.println("Facebook play movie");
        }
    }

    Movie μΆ”μƒν΄λž˜μŠ€λ₯Ό 상속받은 Youbute ν΄λž˜μŠ€μ™€ Facebook 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ Facebook에 μžˆλŠ” λ™μ˜μƒκ³Ό Youtube에 μžˆλŠ” λ™μ˜μƒμ΄ μž¬μƒλ˜λŠ” 세뢀적인 과정이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— Template νŒ¨ν„΄μ„ μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ™μ˜μƒμ„ λ³΄λŠ” μ „λ°˜μ μΈ 과정은 λ™μΌν•˜μ§€λ§Œ μ„Έμ„Έν•œ λ©”μ†Œλ“œλ“€μ€ μ˜€λ²„λΌμ΄λ”©μ„ 톡해 μ›ν•˜λŠ” μŠ€νƒ€μΌλ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    κ²°κ³Ό

    public class Main{
        public static void main(String[] args) {
            new Facebook().initMovie();
            new Youtube().initMovie();
    
            /**
             * Facebook connect Movie Server
             * Facebook downloadMovie in server
             * Facebook play movie
             * Youtube connect Movie server
             * Youtube download Movie In server
             * Youtube play Movie
             */
        }
    }
    • μΆ”κ°€λ‘œ κΆκΈˆν•œ μ μ΄λ‚˜ μˆ˜μ •ν•  λΆ€λΆ„ 있으면 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.
    λ°˜μ‘ν˜•
Designed by Tistory.