Notice
Recent Posts
Recent Comments
Link
투케이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 [클래스 종료]
[결과 출력]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments