목록2022/03 (5)
infinity : 무한한 성장가능성
🤔 불변 클래스란? 그 인스턴스의 내부 값을 수정할 수 없는 클래스 즉, 불변 클래스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. 🧐 불변 클래스의 장점 가변 클래스보다 설계하고 구현하고 사용하기 쉽고 오류가 생길 여지가 적고 훨씬 안전하다. ->라고 책에서는 말하는데, 사용하기 쉽고 오류가 생길 여지가 적고 훨씬 안전 한건 객체 내부 값이 변경되지 않기 때문에 생기는 장점인 거 같은데 왜??? 가변 클래스보다 설계 및 구현이 쉬운 걸까? 이것도 불변이기 때문에 생기는 장점인데, 객체의 값이 변동되지 않도록 사용하는 방법 중 하나인 방어적 복사처럼 에러 상황에 대한 처리를 많이 고려하지 않아도 되기 때문 아닐까? 추측해본다. 🤔 클래스를 불변으로 만들기 위한 방법 객체의 상태..
팩토리 패턴을 적용하지 x 때 -> Component 타입으로 선언된 객체 comp1~3이 존재한다. -> comp1~3은 각각 Button, Switch, Dropdown 중 하나를 선택해 값을 넣어준다. (withoutFactory) 팩토리 패턴을 적용한다면? -> 다른클래스 즉 Factory안에서 주어진 조건 (Usage usage)에 따라 적절한 것을 생성해 반환 값으로 나오는 객체를 값으로 넣어줌 🤔 팩토리 패턴을 적용하면 무슨 장점이 있을까? if) Button을 생성하는 생성자가 변경되고, Button객체를 생성하는 부분의 코드가 여러 곳에 분포되어 있다면 해당 코드를 하나씩 찾아서 새 생성자 형식에 맞게 코드들을 변경해줘야 함 즉 , 객체의 생성을 하는 코드들이 많으면 많을 수록 객체의 생..
1. 싱글톤 패턴 -> 어떤 클래스의 객체가 해당 프로세스에서 딱 하나만 만들어져 있어야 할 때 -> ex) 사용자가 앱을 사용하는데 세팅에서 다크 모드를 설정해 놓으면 다른 페이지로 이동하더라도 다크 모드가 유지되어 있어야 함 즉, 어떤 페이지에 있든 세팅을 관리하는 객체는 반드시 같은 것을 사용해야 한다는 것 -> 생성자를 private으로 선언해 생성하지 못하도록 한다. -> static으로 클래스 자기 자신인 Settings 타입의 객체를 하나 만들어 놓음 -> 즉 클래스 안의 static이 아닌 변수나 메소드들은 객체가 생성될 때마다 메모리의 공간을 새로 차지함 -> static으로 선언된 것들은 객체가 얼마나 만들어지든 메모리의 지정된 공간에 딱 하나씩만 존재하게 됨 -> 컴파일 할때부터 이 ..
1. 단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 존재한다. ex) java.lang.Math, java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있음 2. 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리)를 모아놓을 수도 있음 ex) java.land.colletcions 3. final 클래스와 관련한 메서드들을 모아놓을 때도 사용 -> final 클래스를 상속해서 하위 클래스에 메서드를 넣는 건 불가능하기 때문 (final 클래스는 상속이 불가능하기 때문) 이렇게 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 것이 아니다. 하지만 생성자를 명지하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다..
클래스는 객체의 팩토리이다. 이 챕터에서 이해할 부분은 클래스는 객체의 팩토리라는 것이다. 클래스는 객체를 생성하는데 이것을 클래스가 객체를 인스턴스화 한다고 표현 책에서 간단하게 클래스에서 생성자가 표현된 코드를 보여준다. class Cash{ public Cash(int dollars){ //... } } Cash five=new Cash(5); 위의 예제는 Factory 패턴이라고 부르는 디자인 패턴과 다른 패턴 왜 위의 예제는 Factory라고 부르는 디자인 패턴과 다른 것인가? → new 연산은 오로지 객체라고 불리는 클래스의 인스턴스를 생성하는 것뿐이라... Java에서 Factory 패턴이란? new 연산자를 확장한 것처럼 동작 Factory패턴은 부가적인 로직을 더할 수 있기 때문에, ne..