불변 클래스란? 그 인스턴스의 내부 값을 수정할 수 없는 클래스로, 인스턴스 내 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대로 변경되지 않는다. 예) 자바 플랫폼 라이브러리에는 String과 기본타입의 박싱된 클래스인 BigInteger와 BigDecimal이 여기 속한다. 불변 클래스의 장점 설계 및 구현 용이 낮은 오류 발생률 불변 클래스 생성에 대한 다섯 가지 규칙 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 하위 클래스에서 부주의하게 혹은 나쁜 의도로 객체의 상태를 변하게 만드는상태를 막아준다. 대표적인 방법으로 class의 final 선언이 있다. 모든 필드를 final로 선언한다. 시스템이 강제하는 수단을 통해 설계자의 의도를 명확히 드..
클래스나 필드를 아무 이유 없이 public으로 선언한다면? 캡슐화의 이점을 제공하지 못함. API를 수정하지 않고는 내부 표현 수정 불가 불변식 보장 불가 외부에서 필드에 접근할 때 부수 작업을 수행할 수 없음 → 필드의 접근 제한자를 public → private 변경 및 setter, getter 추가를 통해 패키지 외부에서 접근하는 클래스에게 접근자 제공. 주의사항.package-private 클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출한다 해도 문제 없으며 그 클래스가 표현하는 추상 개념만 올바르게 표현하면 문제 없음. 클라이언트 코드가 클래스 내부 표현에 묶이기는 하지만, 클라이언트도 어차피 이 클래스를 포함하는 패키지 안에서만 동작하는 코드이기 떄문이다.
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 차이점 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐의 차이. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않는다. 정보 은닉 혹은 캡슐화는 소프트웨어 설계의 근간이 된다. 정보은닉의 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 각 컴포넌트간 영향을 주지 않기 때문에 가능하다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담이 적기 때문이다. 특정 기능을 개선해야할 때 관련 컴포넌트만 분석하여 개..
- Total
- Today
- Yesterday
- Effective Java
- Replication Controller
- k8s
- kubernetes
- 자바 메모리 구조
- JMM
- POD
- Java
- Delete
- JVM
- Java Memory Structure
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |