디미터의 법칙(Law of Demeter) 상태를 가지는 객체의 데이터를 꺼내려 하지 말고 메세지를 보내라. 객체의 자료를 숨기고 함수를 공개함. 코드의 중복 사용 방지와 유지 보수성을 높일 수 있다. 결합도를 낮추고 응집도를 높일 수 있다. 디미터의 법칙을 위반한 경우 public class Lotto { private List LottoNumbers; public Lotto(List lottoNumbers) { LottoNumbers = lottoNumbers; } public List getLottoNumbers() { return LottoNumbers; } } @Test void 디미터의_법칙_위반() { List lottoNumbers = new ArrayList(Arrays.asList(1,..
일급 컬렉션(First Class Collection) Wrapping한 Collection 외에 다른 멤버 변수가 없는 상태 특정 역할만을 수행하는 자료구조 // 기존 public class Racing { private List cars; } // 변경 public class Racing { private Cars car; } public class Cars {// List를 Cars 클래스로 Wrapping private List cars;//멤버 변수가 하나 밖에 없는 일급 컬렉션 public Cars(List cars){ this.cars = cars; } } 원시값, 문자열 포장 원시 타입 또는 문자열을 객체로 포장 // 기존 public class User { private String na..
다형성 하나의 타입에 여러 객체를 대입할 수 있는 성질 구현 방법 Overriding 상위 클래스의 메서드를 하위 클래스에서 재정의 Overloading 여러 타입을 받아들여 같은 기능을 하도록 만드는 작업 소스코드 class Cal { public int sum(int v1, int v2) { return v1 + v2; } // Overloading public int sum(int v1, int v2, int v3) { return v1 + v2 + v3; } } class Cal3 extends Cal { public int minus(int v1, int v2){ return v1 - v2; } // Overriding public int sum(int v1, int v2){ System.out..