투케이2K

54. (TWOK/ALGORITHM) [Android] 패턴 - 빌더 패턴 (Builder Pattern) 클래스 구현 실시 본문

투케이2K 알고리즘

54. (TWOK/ALGORITHM) [Android] 패턴 - 빌더 패턴 (Builder Pattern) 클래스 구현 실시

투케이2K 2022. 8. 24. 13:15

[환경 설정 및 설명]

언 어 : Android (Java)

설 명 : 패턴 - 빌더 패턴 (Builder Pattern) 클래스 구현 실시

 

[요약 설명]

    /**
     * TODO [클래스 설명]
     * // -----------------------------------------
     * 1. 빌더 패턴 정의 클래스
     * // -----------------------------------------
     * 2. 빌더 패턴 :
     *
     *  객체 생성 및 데이터 설정 등 복잡한 과정을 사용자가 봤을 때 명시적으로 이해할 수 있도록 구조를 정의한 것입니다
     * // -----------------------------------------
     * 3. 빌더 패턴 사용 이유 :
     *  - 프로그램 코드상 가독성을 향상 시킬 수 있습니다
     *  - 필수 또는 선택적 매개변수를 유연하게 설정하고 활용할 수 있습니다
     *  // -----------------------------------------
     * */
 

[소스 코드]

package com.example.testapp.BuildPattern;

public class Model {


    /**
     * TODO [클래스 설명]
     * // -----------------------------------------
     * 1. 빌더 패턴 정의 클래스
     * // -----------------------------------------
     * 2. 빌더 패턴 :
     *
     *  객체 생성 및 데이터 설정 등 복잡한 과정을 사용자가 봤을 때 명시적으로 이해할 수 있도록 구조를 정의한 것입니다
     * // -----------------------------------------
     * 3. 빌더 패턴 사용 이유 :
     *  - 프로그램 코드상 가독성을 향상 시킬 수 있습니다
     *  - 필수 또는 선택적 매개변수를 유연하게 설정하고 활용할 수 있습니다
     *  // -----------------------------------------
     * */





    /**
     * TODO [빌더 패턴 사용 방법]
     * // -----------------------------------------
     *        try {
     *
     *             // [객체 생성 수행 실시]
     *             Model model = new Model.Builder("투케이", 29) // [필수 매개 변수]
     *                     .setAddr("seoul") // [선택 매개 변수]
     *                     .setSex("m") // [선택 매개 변수]
     *                     .build();
     *
     *             // [로그 출력 실시]
     *             Log.i("---","---");
     *             Log.w("//===========//","================================================");
     *             Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> onCreate() :: 빌더 설정 데이터 확인]");
     *             Log.i("","\n"+"[data :: "+String.valueOf(model.toString())+"]");
     *             Log.w("//===========//","================================================");
     *             Log.i("---","---");
     *         }
     *         catch (Exception e){
     *             e.printStackTrace();
     *         }
     * // -----------------------------------------
     * */





    // TODO [전역 변수 선언 실시]
    private String name;
    private int age;
    private String addr;
    private String sex;





    // TODO [클래스 생성자 초기화]
    private Model(Builder builder){
        this.name = builder._name;
        this.age = builder._age;
        this.addr = builder._addr;
        this.sex = builder._sex;
    }





    // TODO [toString 메소드 재정의]
    @Override
    public String toString() {
        return "Model{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", addr='" + addr + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }





    // TODO [내부 빌더 클래스 정의 실시]
    public static class Builder {

        // [빌더 패던 사용 시 필수 변수 정의]
        private String _name;
        private int _age;


        // [빌더 패턴 사용 시 선택 변수 정의]
        private String _addr;
        private String _sex;


        // [클래스 생성자 초기화 : 필수 변수 포함]
        public Builder(String name, int age){
            _name = name;
            _age = age;
        }


        // [선택적 변수 지정 위한 메소드 정의]
        public Builder setAddr(String addr){
            _addr = addr;
            return this; // [클래스 내에 다른 메소드를 계속 호출하기 위함 : 함수 체이닝]
        }


        // [선택적 변수 지정 위한 메소드 정의]
        public Builder setSex(String sex){
            _sex = sex;
            return this; // [클래스 내에 다른 메소드를 계속 호출하기 위함 : 함수 체이닝]
        }


        // [빌드 설정 완성 메소드 정의 : 함수 체이닝 종료]
        public Model build(){
            return new Model(this); // [모델 클래스 생성자 지정]
        }
    }


} // TODO [클래스 종료]
 

[결과 출력]

 

 

반응형
Comments