투케이2K

58. (TWOK/ALGORITHM) [Java] 패턴 - 프록시 패턴 (Proxy Pattern) 구현 실시 본문

투케이2K 알고리즘

58. (TWOK/ALGORITHM) [Java] 패턴 - 프록시 패턴 (Proxy Pattern) 구현 실시

투케이2K 2022. 8. 31. 08:20

[환경 설정 및 설명]

언 어 : Java

설 명 : 패턴 - 프록시 패턴 (Proxy Pattern) 구현 실시

 

[클래스 구조]

 

[요약 설명]

        /**
         * // -----------------------------------------
         * TODO [프록시 패턴 설정]
         * // -----------------------------------------
         * 1. 프록시 (Proxy) : 대리인이라는 뜻으로 무엇인가를 대신 처리하는 의미입니다.
         * // -----------------------------------------
         * 2. 프록시 패턴 (Proxy Pattern) : 클라이언트가 타깃에 접근하는 방식을 중간에서 변경해주는 역할을 합니다
         * // -----------------------------------------
         * 3. 프록시 패턴은 기능 자체에는 관여하지 않고 접근하는 방법을 제어해줍니다
         * // -----------------------------------------
         * 4. 참고 예제 로직 :
         *   - 클라이언트는 >> 프록시 접속
         *   - 프록시는 클라이언트 요청에 따라서 매핑되는 타깃으로 변경
         *   - 원본 타깃은 요청에 따라서 필요한 로직 수행 실시
         * // -----------------------------------------
         * */
 

[클라이언트 : 소스 코드]

        // --------------------------------------------

        /**
         * // -----------------------------------------
         * TODO [프록시 패턴 설정]
         * // -----------------------------------------
         * 1. 프록시 (Proxy) : 대리인이라는 뜻으로 무엇인가를 대신 처리하는 의미입니다.
         * // -----------------------------------------
         * 2. 프록시 패턴 (Proxy Pattern) : 클라이언트가 타깃에 접근하는 방식을 중간에서 변경해주는 역할을 합니다
         * // -----------------------------------------
         * 3. 프록시 패턴은 기능 자체에는 관여하지 않고 접근하는 방법을 제어해줍니다
         * // -----------------------------------------
         * 4. 참고 예제 로직 :
         *   - 클라이언트는 >> 프록시 접속
         *   - 프록시는 클라이언트 요청에 따라서 매핑되는 타깃으로 변경
         *   - 원본 타깃은 요청에 따라서 필요한 로직 수행 실시
         * // -----------------------------------------
         * */

        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[A_Main >> onCreate() :: [클라이언트] >> [프록시] 이미지 표시 요청 실시]");
        Log.d("//===========//","================================================");
        Log.i("---","---");

        // [클라이언트 >> 프록시 요청]
        Image image = new Proxy_Image("twok.png");
        image.showImage();

        // --------------------------------------------
 

[프록시 : 소스 코드]

package com.app.testwebview.ProxyPattern;

import android.util.Log;

public class Proxy_Image implements Image { // [이미지 인터페이스 상속]


    // [전역 변수 선언 실시]
    private String fileName = "";
    private Image image = null;


    // [클래스 생성자 초기화]
    public Proxy_Image(String fileName){
        this.fileName = fileName;
    }


    // [이미지 인터페이스 메소드 재정의 실시]
    @Override
    public void showImage() {
        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[Proxy_Image >> showImage() :: [프록시] >> [원본] 이미지 접근 및 로직 처리 수행 실시]");
        Log.d("//===========//","================================================");
        Log.i("---","---");

        // [원본 이미지 접근을 위해 객체 생성 실시]
        if (image == null){
            image = new Origin_Image(fileName);
        }

        // [원본 이미지 호출 실시]
        image.showImage();
    }

}
 

[원본 : 소스 코드]

package com.app.testwebview.ProxyPattern;

import android.util.Log;

public class Origin_Image implements Image { // [이미지 인터페이스 상속]


    // [전역 변수 선언 실시]
    private String fileName = "";


    // [클래스 생성자 초기화]
    public Origin_Image(String fileName){
        this.fileName = fileName;

        // [로딩 메소드 호출 실시]
        loadingImage();
    }


    // [로딩 메소드 정의 실시]
    private void loadingImage(){
        Log.i("---","---");
        Log.w("//===========//","================================================");
        Log.i("","\n"+"[Origin_Image >> loadingImage() :: [원본] 이미지 로딩 수행 실시]");
        Log.w("//===========//","================================================");
        Log.i("---","---");
    }


    // [이미지 인터페이스 메소드 재정의 실시]
    @Override
    public void showImage() {
        Log.i("---","---");
        Log.w("//===========//","================================================");
        Log.i("","\n"+"[Origin_Image >> showImage() :: [원본] 이미지 표시 수행 실시]");
        Log.i("","\n"+"[fileName :: "+String.valueOf(fileName)+"]");
        Log.w("//===========//","================================================");
        Log.i("---","---");
    }

}
 

[인터페이스 : 소스 코드]

package com.app.testwebview.ProxyPattern;

public interface Image {

    // [메소드 헤더 선언 실시]
    public void showImage();

}
 

[결과 출력]

 

반응형
Comments