static final String...
)static int...
)String
)of()...
)getter
override
(equals()
)numList
, arrayString
등CONSTANT_CASE
static final String...
private
final
키워드 사용, 생성자로 값 초기화public class Car {
private final String name;
public Car(final String name) {
this.name = name;
}
}
@SuppressWarnings("NonAsciiCharacters")
태그 추가extracting
사용List<Human> list = new ArrayList<>(Arrays.asList(human1,human2));
assertThat(list)
.extracting("name")
.contains("hunch", "judi");
public void move(int number) { //랜덤값 number을 밖으로 이동
if (number >= MOVABLE_LOWER_BOUND) {
position++;
}
}
@override
된 메서드를 통해 가져온다
//전략1 사용
public void moveCarByRandomNumber() {
final NumberGenerator randomGenerator = new RandomNumberGenerator();
move(randomGenerator);
}
//전략2 사용
public void goCar() {
final NumberGenerator goGenerator = new GoNumberGenerator();
move(goGenerator);
}
//전략이 넘어올 메서드
public void move(NumberGenerator numberGenerator) {
final int number = numberGenerator.generate();
if (number >= MOVABLE_LOWER_BOUND) {
position++;
}
}
//인터페이스
public interface NumberGenerator {
int generate();
}
//전략1 : 랜덤이동
public class RandomNumberGenerator implements NumberGenerator {
private static final int RANDOM_NUMBER_UPPER_BOUND = 10;
@Override
public int generate() {
return random.nextInt(RANDOM_NUMBER_UPPER_BOUND);
}
}
//전략2 : 무조건 이동
public class GoNumberGenerator implements NumberGenerator {
private static final int GO_NUMBER = 4;
@Override
public int generate() {
return GO_NUMBER;
}
}
Read–Only
(불변 객체)equals()
, hashCode()
사용Comparable
implement
후 compareTo()
사용public class Position implements Comparable<Car> {
//...
@Override
public int compareTo(Position position) {
return Integer.compare(this.position, o.get());
}
}
model
이 view
로 넘어오는 것 제한controller
에서 view
로 값 전송할 때 사용Static Factory Method
public class LottoFactory() {
private static final int LOTTO_SIZE = 6;
private static List<LottoNumber> allLottoNumbers = ...; // 1~45까지의 로또 넘버
public static Lotto createAutoLotto() {
Collections.shuffle(allLottoNumbers);
return new Lotto(allLottoNumbers.stream()
.limit(LOTTO_SIZE)
.collect(Collectors.toList()));
}
public static Lotto createManualLotto(List<LottoNumber> lottoNumbers) {
return new Lotto(lottoNumbers);
}
...
}
public class Level {
...
public static Level of(int score) {
if (score < 50) {
return new Basic();
} else if (score < 80) {
return new Intermediate();
} else {
return new Advanced();
}
}
...
}
from
: 매개 변수 1개of
: 매개 변수 2개 이상getInstance
| instance
: 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음newInstance
| create
: 새로운 인스턴스를 생성get[OtherType]
: 다른 타입의 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음.new[OtherType]
: 다른 타입의 새로운 인스턴스를 생성.수없는 시행착오와 질문의 반복
정리 최고네요!! 감사합니다 😁👍👍