
클래스가 하나 이상의 자원에 의존할때 이런 클래스를 정적 유틸리티 클래스나 싱글턴 클래스로 만드는 경우 // 정적 유틸리티를 잘못 사용한 예 - 유연하지 않고 테스트하기 어렵다 public class SpellChecker{ private static final Lexicon dictionary = ...; // 사전에 의존 private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word){...} public static List suggestions(String typo){...} } // 싱글턴을 잘못 사용한 예 - 유연하지 않고 테스트하기 어렵다 public class SpellChecker{ private static..

정적 멤버만 담은 유틸리티 클래스 정적 메서드와 정적 필드만을 담은 클래스 java.lang.Math, java.util.Arrays, java.util.Collections final 클래스와 관련한 메서드를 모아 놓을 때 사용 인스턴스화 막기 유틸리티 클래스는 인스턴스로 만들어 쓰려 설계한것이 아님 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어서 인스턴스화가 가능하기 때문에 인스턴스화를 막을 수 없음 추상 클래스로 만들면 하위 클래스를 만들어 인스턴스화가 가능하기 때문에 인스턴스화를 막을 수 없음 ❗️ private 생성자를 추가하여 인스턴스화를 막을 수 있다. (클래스 바깥에서 접근할 수 없음) 이는 상속도 불가능하게 한다.(생성자가 접근이 불가능하기 때문)

싱글턴(singleton) 인스턴스를 오직 하나만 생성할 수 있는 클래스 무상태 객체, 설계상 유일해야하는 시스템 컴포넌트 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 싱글턴 인스턴스를 mock 구현으로 대체할 수 없기 때문 public static final 필드 방식의 싱글턴 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... } } private 생성자는 public static final 필드인 Elvis.INSTANCE를 초기화할때 한번만 호출됨. public 이나 prot..

정적 팩터리와 생성자에는 선택적 매개변수가 많을때 적절한 대응이 어렵다. 점층적 생성자 패턴 ( 확장의 어려움) public class NutritionFacts { private final int servingSize; // 필수 private final int servings; // 필수 private final int calories; // 선택 private final int fat; // 선택 private final int sodium; // 선택 private final int carbohydrate; // 선택 public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } public Nutri..

클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자. 대신 정적팩터리 메서드를 제공하자. 장점 이름을 가질 수 있다. 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. ex). Boolean.valueof(boolean) 메서드 반환 타입의 하위 타입 객체를 반환할 수 있는 능력 반환할 객체의 클래스를 자유롭게 선택할 유연성 제공 ( 구현 클래스를 공개하지 않고도 그 객체를 반환할 수 있다!). 예시로 자바 컬렉션 유틸리티 구현체 대부분이 단 하나의 인스턴스화 불가 클래스인java.util.Collections 에서 정적 팩터리 메서드를 통해 얻을 수 있다. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.(..

삼성 청년 SW 아카데미 7기에 지원하였다. 1년동안의 삼성에서의 교육과 취업지원, 매달 100만원 이상의 지원금 등등 너무나도 좋은 장점이 많기 때문이다. 자세한 사항들은 SSAFY의 홈페이지를 참고해주세요. https://www.ssafy.com/ksp/jsp/swp/swpMain.jsp 삼성 청년 SW 아카데미 삼성 청년 SW 아카데미| 소프트웨어 교육, 취업 지원, 코딩 교육 www.ssafy.com 삼성에서 진행한다는 점, 좋은 교육 프로그램, 지원금, 취업 확률이 매우 상승하는 점 등의 여러가지 이점들로 경쟁률이 매우 세다. 공식적으로 밝혀진 것은 없지만 세자리 수 : 1 경쟁률 정도가 된다고 한다. 서울캠퍼스가 경쟁률이 가장 높고, 그다음은 대전 순이다. 나는 1지망 서울, 2지망 대전, 그..

우아한테크코스는 배달의민족의 우아한형제들에서 1년동안 개발을 배우며 개발자로 성장할 수 있게끔 해주는 좋은 프로그램이다. 훌륭한 개발자가 되고 싶어 우아한테크코스 4기에 지원하였다. 우테코 선발 과정은 자기소개서 -> 1차 코딩 테스트 -> 프리코스 -> 2차 코딩 테스트 이다. 선발 과정에 대한 후기들을 작성해보려한다. 자기소개서 🧾 자기소개서는 5문항으로, 프로그래밍 역량, 몰입 경험, 지원 이유, 어떤 프로그래머가 되고 싶은 지 등의 질문이 있었다. 우테코는 교육을 위한 선발인만큼, 취업 시에 작성하는 자기소개서와는 다르다고 생각했다. 나 이만큼 잘한다 가 아니라 나 이만큼 열정있다! 를 보여줘야한다고 생각한다. 잘하는 사람을 뽑는 것이 아니라 열정이 있는 사람, 성장 가능성이 있는 사람을 뽑는 ..
백준의 자료구조 문제들을 풀다가 조금 응용이 필요해서 어려운 문제를 발견했다. 풀이가 흥미롭고 좋은 내용이기도 해서 정리해보려 한다. 자료구조 문제들에는 좋은 문제들이 많은 것 같다. 문제를 읽고 힙을 이용해야하는 것 같아서 힙을 이용해 풀긴 했다. 문제를 볼 때부터 시간 제한이 0.1초로 빡센게 느낌이 쎄했는데, 역시나 시간초과로 문제를 틀렸다. 푼 내용 자체는 틀린것같진 않은데 시간 제한에서 걸린 것 같았다. 어떤 풀이를 이용해 풀어야할지 감이 안잡혀서 구글링을 통해 다른 사람의 풀이를 참고해보았다. 풀이가 정말 흥미로웠다. 아래에서 설명해보겠다. https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N..