체스 미션에서 전략패턴을 도입하면서 다음과 같은 클래스 상속 구조를 갖추게되었다. https://xxeol.tistory.com/22 [체스 미션] 상속 대신 전략패턴 도입하기 나는 체스 미션의 설계를 아주 많이 갈아엎었다.. 대공사가 정말 많았다. 한 4-5번 정도? (이 과정은 다른 포스팅에서 기록해두려고 한다.) 오늘은 상속으로 이루어져있던 코드를 전략패턴을 도입 xxeol.tistory.com 여기서 한 가지 문제점이 있다. public class Piece { protected final Color color; protected final PieceType type; public Piece(Color color, PieceType type) { validateColor(color); this.c..
나는 체스 미션의 설계를 아주 많이 갈아엎었다.. 대공사가 정말 많았다. 한 4-5번 정도? (이 과정은 다른 포스팅에서 기록해두려고 한다.) 오늘은 상속으로 이루어져있던 코드를 전략패턴을 도입해 조합으로 바꾼 대공사에 대해 설명하고자 한다. 기존의 코드(step1)에서, 나는 Piece라는 추상 클래스를 상속하는 방법으로 각 기물들을 구현했다. Piece라는 추상클래스가 있고, 기물별로 구현체가 존재했다. 하지만 해당 코드에서 한가지 찜찜한 점이 있었다. public class Bishop extends Piece { /***/ @Override public PieceType getType() { return PieceType.BISHOP; } } 그것은 바로 위와 같이 getType 함수를 통해 해당..
이펙티브 자바 아이템1(생성자 대신 정적 팩터리 메서드를 고려하라)를 읽고 사다리 미션에 적용해보며 학습한 내용들을 정리해보자. 사다리 생성 미션을 진행하며, 다음과 같은 궁금증이 들었다. Player의 일급 컬렉션 Players는, 생성자의 파라미터로 List players를 받는게 좋을까, List playerNames를 받는게 좋을까? // 1. List players 받기 public Players(List players) { this.players = players; } // 2. List playerNames 받기 public Players(List playerNames) { List players = playerNames.stream() .map(Player::new) .collect(Col..