본문 바로가기

Backend/Java

(17)
자바 팩토리 메소드 패턴 (Java Factory Method Pattern) 팩토리 메소드 패턴에 대해서 알아볼게요. 굉장히 많이 쓰이는 패턴이고, 익혀두면 나름 유용하게 쓸 수 있어요. 자바 소스 안에서도 많이 볼 수 있구요. 저도 때때로 사용하는 것 같습니다. 예제로는 패스워드를 암호화하는 기능을 구현해볼거에요. 실제 암호화 로직은 뺄거구요. 최대한 완성도 높게 구조를 만들겠습니다. 1. 인터페이스 만들기 Password라는 인터페이스를 만들었고, 클래스에서 세부 구현할 encode라는 메소드를 추가했어요. 혹은 추상클래스를 만들어서 추상 메소드를 추가하셔도 상관없습니다. public interface Password { String encode(String str); } 2. 구현체 작성 라이트하게 암호화하는 SimplePassword 클래스 강하게 암호화하는 SuperPa..
이클립스(Eclipse) 자동정렬 커스텀 빌더 패턴으로 코딩하다보면 아래와 같은 코드를 정렬하고 싶을 때가 있어요. 줄을 바꿔주는게 코드 보기가 좋은 것 같아요. public User toUser() { return User.builder().email(email).password(password).nickname(nickname).gender(gender).build(); } public User toUser() { return User.builder() .email(email) .password(password) .nickname(nickname) .gender(gender) .build(); } Preferences - Java - Code Style - Formatter 탭으로 이동해주세요. 그다음 New 버튼을 클릭하여 profile ..
자바 싱글톤 패턴 (Java Singleton Pattern) 자바 환경에서 싱글톤으로 객체를 사용하는 방법에 대해서 알아볼게요. 싱글톤 패턴은 디자인 패턴 중 하나로 최초 한 번만 객체를 생성을 하여 메모리에 할당하는 기법이에요. 동일한 객체를 지속적으로 사용해야 할 때가 있어요. 이 때마다 인스턴스를 생성해내는 것보다 하나의 인스턴스를 사용하는 것이 리소스 절약면에서 유리합니다. 싱글톤을 구현하는 방법은 굉장히 많이 나와있지만 딱 두 가지만 알면 되요. 기본 방법 많이 쓰는 방법 Simple 방법 우선, 가장 기본 방법부터 작성해볼게요. 최초 한 번 객체를 초기화하기 때문에 Thread-Safe를 보장합니다. 하지만, 객체를 사용하지도 않는 경우에도 이미 생성되어 있어서 사용하지 않는다면 리소스 낭비가 있을 수 있습니다. 사실 사용하지 않을 객체를 싱글톤으로 만..
자바 템플릿 메소드 패턴 (Java Template Method Pattern) 자바 디자인 패턴에서 많이 언급되는 패턴 중 하나에요. 도대체 이게 뭔지 바로 구현해볼게요. 예제로 길을 찾는 기능을 구현하려고 해요. 출발지와 목적지를 입력하면 빠른 길, 가까운 길, 무료 길 등등 원하는 길을 알려줄거에요. 템플릿 클래스 어떤 길을 찾건 출발지와 목적지는 공통적으로 받아야되요. 공통적인 기능은 템플릿 클래스에 구현하고 빠른, 가까운, 무료와 같이 알고리즘이 다른 기능은 추상 메소드로 선언하여 각각 구현하도록 할거에요. public abstract class Direction { // 출발, 도착 세팅 final void setStartAndDest(String start, String end) { System.out.println("출발지 : " + start); System.out...
자바 빌더 패턴 (Java Builder Pattern) 장단점 우선, 빌더 패턴과 비교되는 패턴이 두 가지가 있어요. 두 가지 패턴은 용어만 거창하지 이미 알고 계실거에요. 점층적 생성자 패턴 : 생성자로 필드를 세팅, ex) new UserInfo(userId, password); 자바빈 패턴 : Setter 메서드로 필드를 세팅, ex) userInfo.set(userId); 빌더 패턴 이제, 빌더 패턴을 직접 구현해볼게요. Builder 패턴 직접 구현 @Getter public class UserInfo { private String userId; private String nickname; private String password; private String email; public static UserInfoBuilder builder() { retur..
자바 파일 확장자 추출 (+ Spring) Java로 파일 확장자 구하는 방법이에요. 1. Pure Java String filename = "a.jpg"; int index = filename.lastIndexOf("."); String extension = filename.substring(index + 1); // jpg 2. Apache Common IO Library 공식 홈페이지 : http://commons.apache.org/proper/commons-io/ Maven/Gradle/... : https://mvnrepository.com/artifact/commons-io/commons-io/2.6 import org.apache.commons.io.FilenameUtils String extension = FilenameUtils..
자바 인터페이스 사용 이유 (Java Interface) 자바에서 인터페이스를 왜 써야하나? 이 글 내용은 실제 사용할 수 있는 몇 가지 사례라는 표현이 맞을 수 있습니다. 많은 분들이 인터페이스에 대한 내용을 이론만 보고 이해하기 어려워하시기에 최대한 접근하기 쉽게 적어두었습니다. 생각보다 많은 분들이 글을 보셔서 미리 말씀 드립니다. 해당 내용을 보시고 주체적으로 생각해보시고 다른 글의 내용도 한 번 다시 보시면 깊은 이해에 도움이 될 것 같습니다. 자바 인터페이스 사용 이유 1. Cooperation (협업) 예를 들어 우리는 한국인을 위한 번역기를 만들어 볼거에요. 아 전세계 언어가 너무 많아요ㅠㅠ 그래서 업무를 나눠봤어요. "너는 영어 번역 클래스를 만들어, 난 중국어 번역 클래스를 만들게. 준비~ 시작!" 하고 각자 다 만들어서 결과물을 공유했어요...
Java Lombok 설치 가이드 및 주의사항 Java Lombok 설치에 대해 알아볼게요. 자바에서는 데이터를 주고 받을 모델 클래스를 생성하고 나면 수기로 Getter/Setter 메소드를 직접 생성해주어야 해요. 필드가 수정/삭제 될 경우 역시 마찬가지에요. public class SignIn { private String userId; private String password; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getPassword() { return password; } public void setPassword(String password) { this.p..