일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- redis
- ReactJS
- Web Server
- ubuntu
- MySQL
- Spring
- IntelliJ
- devops
- javascript
- jenkins
- Spring Boot
- Oracle
- tool
- linux
- 요리
- springboot
- Gradle
- elasticsearch
- java
- JVM
- Spring Batch
- jsp
- 맛집
- laravel
- it
- db
- Git
- AWS
- Design Patterns
- php
Archives
- Today
- Total
아무거나
Setter 사용을 지양하자. 본문
반응형
- Setter 사용을 지양하자.
- 값을 변경한 의도를 파악하기 힘듬
// 어떤 의도로 데이터를 변경하는지 명확히 알 수 없다. public Member updateMember(long id) { final Member member = findById(id); member.setFistName("value"); member.setLastName("value"); member.setAge("value"); return member; }
- 객체의 일관성을 유지하기 어려움
- public 으로 언제든 변경할 수 있는 상태가 되므로 모든 곳에서 변경이 할 수 있는 상태가 되므로 객체의 일관성을 유지하기 어렵다.
- Setter 대신 다른 것을 사용 필요
- 생성자를 오버로딩 (멤버변수가 많고 다양한 생성자를 가져야 한다면 코드가 길어지고 가독성이 떨어지므로 Builder 패턴을 사용하자.)
- Builder 패턴 사용
public class Member { private String name; private String age; @Builder public Member(String name, int age){ this.name = name; this.age = age; } }
// 빌더패턴은 요구사항에 맞게 필요한 데이터만 이용하여 순서가 상관없이 유연한 클래스 생성이 가능하며 전체 생성자 하나만 갖고 있기 때문에 유지보수 및 가독성에 좋다. Member.builder().name("value").age("value").build();
- 정적 팩토리 메소드
// 정적 팩토리 메서드를 사용한다면 이름을 가질 수 있기 때문에 반환될 데이터를 추측할 수 있다. public class Member { private String name; private String age; public static void createMember(String name, int age){ this.name = name; this.age = age; } public static void createMemberName(String name){ this.name = name; } }
- 값을 변경한 의도를 파악하기 힘듬
반응형
'Java & Kotlin > Java' 카테고리의 다른 글
JDK8 에서 Perm 영역 삭제와 Metaspace 영역의 추가 (0) | 2023.07.17 |
---|---|
JVM Heap 모니터링 및 Heap Dump 분석 (0) | 2023.03.09 |
Spring Batch 6편 - Chunk-Oriented Processing (0) | 2022.11.06 |
Java Stream 이란 (0) | 2022.08.11 |
Java 메모리(with. JVM) 관련 정리 (0) | 2022.07.27 |
Comments