목록자바 (5)
레넌의 개발 일기
정적 팩터리 메서드가 생성자보다 좋은 점 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리 메서드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 네이밍 컨벤션 from 하나의 매개변수를 받아서 객체를 생성 of 여러개의 매개변수를 받아서 객체를 생성 ValueOf from과 of의 더 자세한 버전 getInstance | instance 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음. newInstance | create 새로운 인스턴스를 생성 get[OtherType] 다른 타입의 인스턴스를 생성. 이전에 반환했던 것과 같을 수 있음. new[OtherType] 다른 타입의 새로운 인스턴스를 ..
Arrays.asList() 와 List.of() 모두 값을 더해주려고 하면 UnsupportedOperationException이 발생한다. 1. set으로 값 변경이 가능한가 Arrays.asList는 set으로 값을 변경할 수 있지만, List.of는 값 변경이 불가능하다. 2. null을 원소로 가질 수 있는가 Arrays.asList는 null을 원소로 가질 수 있지만, List.of는 null을 가질 수 없다. 3. 배열의 변화에 반응하는가 Arrays.asList는 배열을 수정하면 그대로 값이 바뀌지만, List.of는 바뀌지 않는다.
'모든 원시 값과 문자열을 포장한다' 라는 말은 객체지향 체조 생활 원칙에서 나온 말이다. 원시값 포장이란? int money = 5000; Moeny money = new Money(5000); 첫번째줄에서는 원시 타입의 변수를 선언하였고, 두번째 줄에서는 원시타입의 변수를 객체로 포장하여 선언하였다. 원시값 포장이란 원시 타입을 이용해 의미를 나타내지 않고, 의미있는 객체로 포장한다는 개념이다. 자신의 상태를 객체 스스로 관리한다 public class User { private final int money; public User(final int moeny) { this.money = money; } } User라는 클래스에서 보유하고 있는 돈을 원시 타입인 int형으로 필드로 둬보자. 그렇다면, ..
String 문자열을 저장하는 String의 내부의 문자열을 수정할 수 없다. String의 replace() 메소드와 '+' 연산은 내부의 문자를 대치하는 것이 아니라, 대치된 새로운 String객체가 생성되어 리턴한다. String data = "ABC"; data += "DEF"; 위의 코드에서는 "ABC"의 객체와 합쳐진 "ABCDEF"의 객체 총 2개의 객체가 생긴다. 문자열을 결합하는 '+' 연산자를 많이 사용한다면, String 객체의 수가 늘어나기 때문에, 성능이 느려질 수 있다. String text = ""; for (int i=0;i
MVC 패턴은 Model-View-Controller 의 약어로 주로 GUI 기반의 애플리케이션 개발에 사용된다. 이외에, MVP(Model-View-Presenter), MVVM(Model-View-ViewModel) 등과 같은 패턴들도 널리 사용되고 있다. 등장 이유 가장 큰 이유는 생산성 떄문이다. 구성요소들의 재사용 확장성 증가 중복 코딩 제거 각 요소들에 집중가능(협업에 용의) 흐름 클라이언트는 컨트롤러에 필요한 기능을 요청한다. 컨트롤러가 알맞은 모델에게 로직 수행을 요청한다. 컨트롤러는 알맞은 뷰를 선택하여 화면을 출력한다. 모델(Model) 데이터와 관련된 일(저장, 가공 등) 비즈니스 로직과 관련된 부분 처리 데이터베이스 관련 로직 구현 뷰(View) 사용자에게 알맞은 화면을 보여주는 역..