342일차 - 빌더 패턴 (Builder Pattern) (1)

2021. 12. 12. 22:36·아카이브/일기
반응형

 

 

/** "Product" */
class Pizza {
	private String dough = "";
	private String sauce = "";
	private String topping = "";

	public void setDough(String dough) {
		this.dough = dough;
	}

	public void setSauce(String sauce) {
		this.sauce = sauce;
	}

	public void setTopping(String topping) {
		this.topping = topping;
	}
}

/** "Abstract Builder" */
abstract class PizzaBuilder {
	protected Pizza pizza;

	public Pizza getPizza() {
		return pizza;
	}

	public void createNewPizzaProduct() {
		pizza = new Pizza();
	}

	public abstract void buildDough();

	public abstract void buildSauce();

	public abstract void buildTopping();
}

/** "ConcreteBuilder" */
class HawaiianPizzaBuilder extends PizzaBuilder {
	public void buildDough() {
		pizza.setDough("cross");
	}

	public void buildSauce() {
		pizza.setSauce("mild");
	}

	public void buildTopping() {
		pizza.setTopping("ham+pineapple");
	}
}

/** "ConcreteBuilder" */
class SpicyPizzaBuilder extends PizzaBuilder {
	public void buildDough() {
		pizza.setDough("pan baked");
	}

	public void buildSauce() {
		pizza.setSauce("hot");
	}

	public void buildTopping() {
		pizza.setTopping("pepperoni+salami");
	}
}

/** "Director" */
class Cook {
	private PizzaBuilder pizzaBuilder;

	public void setPizzaBuilder(PizzaBuilder pizzaBuilder) {
		this.pizzaBuilder = pizzaBuilder;
	}

	public Pizza getPizza() {
		return pizzaBuilder.getPizza();
	}

	public void constructPizza() {
		pizzaBuilder.createNewPizzaProduct();
		pizzaBuilder.buildDough();
		pizzaBuilder.buildSauce();
		pizzaBuilder.buildTopping();
	}
}

/** A given type of pizza being constructed. */
public class BuilderExample {
	public static void main(String[] args) {
		Cook cook = new Cook();
		PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
		PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();

		cook.setPizzaBuilder(hawaiianPizzaBuilder);
		cook.constructPizza();

		Pizza pizza = cook.getPizza();
	}
}

 

위의 코드는 위키백과를 참조했다.

빌더 패턴을 Data Class에 적용하면

같은 테이블을 사용하는 Data들의

구분이 더 쉬워지고

값을 넣기도 수월해 질 것 같다.

반응형

'아카이브 > 일기' 카테고리의 다른 글

346일차 - The Story (가명) : 필요한 기능  (0) 2021.12.16
345일차 - 직장인과 관련된 아이디어가 없을까?  (0) 2021.12.15
344일차 - 무슨 앱을 개발하지  (0) 2021.12.14
343일차 - 빌더 패턴 (Builder Pattern) (2)  (0) 2021.12.13
341일차 - Android Paging3 (3)  (0) 2021.12.11
340일차 - Android Paging3 (2)  (0) 2021.12.10
339일차 - Android Paging3 (1)  (0) 2021.12.09
338일차 - 간단한 일기  (0) 2021.12.08
'아카이브/일기' 카테고리의 다른 글
  • 344일차 - 무슨 앱을 개발하지
  • 343일차 - 빌더 패턴 (Builder Pattern) (2)
  • 341일차 - Android Paging3 (3)
  • 340일차 - Android Paging3 (2)
권퓨터
권퓨터
만드는 걸 좋아하는 개발자의 기록. 코드든 글이든, 일단 만들어 봅니다.
  • 권퓨터
    권퓨터: Kwonputer
    권퓨터
  • 티스토리 홈 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (559)
      • 개발 (56)
        • 프로젝트 (5)
        • 모바일 (44)
        • 프론트엔드 (0)
        • 백엔드 (2)
        • 인프라 (0)
        • AI · 머신러닝 (4)
      • IT · 테크 (10)
        • 기술 트렌드 (3)
        • 도구 · 생산성 (1)
        • 제품 리뷰 · 추천 (0)
        • 마케팅 · 수익화 (6)
      • 자기계발 (7)
        • 공부법 · 언어 (0)
        • 취업 · 커리어 (7)
      • 아카이브 (486)
        • 일기 (480)
        • 취미 (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • 블로그 이전
  • 공지사항

    • 서브 블로그 => https://kwonputer.com/
  • 인기 글

  • 태그

    상태관리
    블로그수익화
    https://github.com/kwongeneral/kortfolio.git
    flutter
    flutter 개발자
    python
    injectable
    ai 게임 개발
    python 기초
    OpenAI GPT
    dynamodb
    aws lambda
    AI블로그
    riverpod
    FACEBOOK광고
    next.js
    flutter 면접 질문
    내러티브 게임
    kotlin
    콘텐츠자동화
    파이썬
    Clean Architecture
    https://www.kwonputer.shop/
    AWS CDK
    Prompt Engineering
    TypeScript
    클린 아키텍처
    다국어 블로그
    Single Table Design
    서버리스 아키텍처
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
권퓨터
342일차 - 빌더 패턴 (Builder Pattern) (1)
상단으로

티스토리툴바