개발자 필독도서 리뷰

[독서] “이펙티브 자바 3편” 3일차

개발자 배찌 2022. 10. 24. 15:20
728x90

#코딩 #개발자 #객체지향의사실과오해 #개발자필독 #도서리뷰

1 주차
금 | Assignment #3
📚 2장. 객체 생성과 파괴
✔️ TIL

오늘 TIL 3줄 요약
- 생성자 매개변수가 많을 경우에 빌더사용을 고려해볼것
- 빌터패턴, lombok의 @Builder
- Enum, EnumSet<>

TIL (Today I Learned) 날짜
2023.01.06

오늘 읽은 범위
2장. 객체 생성과 파괴 - 아이템2

책에서 기억하고 싶은 내용을 써보세요.
- 생성자 매개변수가 많은 경우에 빌더 사용을 고려해볼것.
- 생성자 / 자바빈(setter) 사용을 개선한 패턴이
빌더패턴!! 매개변수가 많거나, 매개변수가 늘어나 수 있는 가능성이 높은경우 사용하면 좋다.

- 빌더패턴

public abstract class Pizza{
	public enum Topping{
		HAM, MUSHROOM, ONION
	}

	final EnumSet<Topping> toppings;

	abstract static class Builder<T extends Builder<T>>{
		EnumSet<Topping> toppings = EnumSet.noneOf(Topping.class);

		public T addTopping(Topping topping){
			toppings.add(Object.requiredNonNull(topping));
			return self();
		}
		abstract Pizza build();
		protected abstract self();
	}
	Pizza(Builder<?> builder){
		toppings = builder.toppins;
	}

	pubic static void main(String[] args){
		
	}
}
public class NyPizza extends Pizza{
	public enum Size{
		SMALL, MIDIUM, LARGE
	}

	private final Size size;

	public static class Builder extends Pizza.Builder<Builder>{
		private final Size size;

		puublic Builder(Size size) {
			this.size = Objects.requireNonNull(size);
		}

		@Override
		public NyPizza build(){
			return new NyPizza(this);
		}

		@Override
		protected Builder self(){
			return this;
		}
	}
	private NyPizza(Builder builder){
		super(builder);
		size=builder.size;
	}
}
public class PizzaClient{
	public static void main(String[] args){
		NyPizza nyPizza = new NyPizzaa.Builder(NyPizza.Size.MEDIUM)
							.addTopping(Pizza.Topping.HAM)
							.addTopping(Pizza.Topping.MUSHROOM)
							.build();
	}
}


**롬복의 @Builder

@Builder
public class NutritionFacts {
	@Builder.Default private int servingSize = 10;
	private int sodium;
	private int carbohydrate;
	private int servings;
	@Singular private int List<String> name;

	public static void main(String[] args){
		NutritionFacts nutritionFacts = NutritionFacts.builder()
												.servings(10)
												.name("baejiyoung")
												.name("jongchan")
												.build();
	}
}


오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 책으로 봐서는 이해안됬던 부분이 강의를 들으니까 이해가 확 된다. 강의는 백기선 강사님의 유튜브 무료강의를 들었다.

그외에 공부한 내용
Enum >> 블로그에 업로드 해놓음.