static final String...)static int...)String)of()...)getteroverride(equals())numList, arrayString 등CONSTANT_CASEstatic final String...privatefinal 키워드 사용, 생성자로 값 초기화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 Methodpublic 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] : 다른 타입의 새로운 인스턴스를 생성.수없는 시행착오와 질문의 반복
정리 최고네요!! 감사합니다 😁👍👍