개발자 필독도서 리뷰

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

개발자 배찌 2022. 10. 19. 14:06
728x90

#코딩 #개발자 #이펙티브자바 #개발자필독 #도서리뷰

1 주차
목 | Assignment #2
📚 2장. 객체 생성과 파괴

✔️ TIL 오늘 TIL 3줄 요약
- 생성자 대신 정적팩토리메서드를 고려하라.
- 여기서 의미하는 정적팩토리메서드는 디자인패턴 팩토리메서드랑 다른 개념.
- 잘 이해가 안된다면, 이것만 기억! 생성자를 사용하는것보다 정적팩토리메서드를 사용하는게 장점이 더 많다.

TIL (Today I Learned) 날짜
2023.01.05

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

책에서 기억하고 싶은 내용을 써보세요.
- 생성자 대신 static 팩토리 메소드를 고려해볼것
- 장점1. 이름을 가질 수 있다.
- 장점2. 반드시 새로운 객체를 만들 필요가 없다.
- 장점3. 리턴 타입의 하위타입 인스턴스를 만들수도 있다.(유연성)
- 장점4. 리턴하는 객체의 클래스가 입력 매개변수에 따라 매번 다를 수 있다.(유연함)
- 장점5. 리턴하는 객체의 클래스가 public static 팩토리메소드를 작성할 시점에 반드시 존재하지 않아도 된다.
-단점1. public 또는 Protected 생성자 없이 static public 메소드만 제공하는 클래스는 상속할 수 없다.
(오히려 장점일수 있을듯)

public class Foo {
	String name;
	String address;

	public Foo(){
	}

	public static final Foo GOOD_NIGHT = new Foo();
	
	public Foo(String name){
		this.name=name;
	}

	public static Foo withName(String name) {
		return new Foo(name);
	}

	public static Foo withAddress(String address){
		Foo foo = new Foo();
		foo.address = address;
		return foo;
	}
	
	public static Foo getFoo(){
		return GOOD_NIGHT;
	}

	public static Foo getFoo(boolean flag){
		return flag? new foo(): new BarFoo();
	}

	public static void main(String[] args){
		Foo foo = new Foo("jiyoung");
		Foo foo1 = foo.withName("jiyoung");
		Foo foo2 = Foo.getFoo(); //매번 새로운 객체를 만들 필요가 없다.
	}

	static class BarFoo extends Foo {
	}
}




오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 첫장부터 막히다니.. 내 자신을 반성하는 시간이였다.
천천히 꾸준히 읽어야지!!!
- 20230105 백기선님이 유튜브에 올려주신 1시간짜리 강의를 보았다. 나름 한번 더 정리된 느낌이다.


참고 블로그

https://sun-22.tistory.com/m/84