enum은 class구현과 같은 문법을 가지며, 이를 통해 클래스를 상수처럼 사용할 수 있다. 상수값처럼 유일하게 하나의 인스턴스가 생성되어 사용된다. (일종의 singleton을 보장) 서로 관련있는 상수값들을 모아서 유용하게 사용할것 사용 예제 Java) enum을 활용해 if문 없애기 (with Calculator 예제) 참고자료 Java Enum 활용기 - 우아한형제들 기술 블로그 nextree/Java: enum의 뿌리를 찾아서 opentutorials/상수와 enum - Java opentutorials/enum 클래스의 사용과 이해 - level up 과정

SOLID (객체 지향 설계) Single Responsibility Principle (SRP) : 단일 책임의 원칙 Open Close Principle (OCP) : 개방 폐쇄의 원칙 The Liskov Substitution Principle (LSP) : 리스코프 치환의 원칙 Interface Segregation Principle (ISP) : 인터페이스 분리의 원칙 Dependency Inversion Principle (DIP) : 의존성 역전의 원칙 참고자료 nextree/객체지향 개발 5대 원리: SOLID 개발자에게 유용한 법칙, 이론, 원칙, 그리고 패턴들 tistory/객체 지향 설계란? (SOLID) github/객체지향 디자인의 5원칙(SOLID 원칙) 객체지향 5대 원칙 SR..

git : https://github.com/os94/java-coordinate/tree/enum-customException 기본적으로 Figure를 상속받는 Line, Triangle, Rectangle 클래스가 있다. 그리고 List points를 주면 이 중 어느것을 생성할지 mapping하는 역할의 팩토리가 있다. 팩토리내에선 if문을 없애고자 map을 사용하였다. 이 과정에서 사용된 LineCreator, TriangleCreator, RectangleCreator를 상속시키는 FigureCreator 인터페이스가 존재하며, 이것은 단순히 create() 메소드 뼈대만 갖는다. 이렇게 구현한 1차적인 코드는 다음과 같다. (자세한 코드는 git 커밋기록을 들여다 볼 것) 아래의 LineCre..

Apache Library - StringUtils Class StringUtils (Apache Commons Lang 3.9 API) isBlank(), isEmpty() 외에도 참 많은 편리한 메소드들이 존재한다. 숙지하고 유용하게 사용하자 ! dependency 추가 compile 'org.apache.commons:commons-lang3:3.0' import (보통 auto-import 됨) import org.apache.commons.lang3.StringUtils; isBlank() vs isEmpty() 추가로, java.lang.String의 isBlank(), isEmpty()는 null값을 처리하지 못한다. 참고할만한 링크 tistory/Java-StringUtils

DTO vs VO (Data Transfer Object / Value Object) 용도는 비슷하나, 간단히 DTO는 variable / VO는 value 같은 느낌 또다른 표현으로는, DTO는 Instance / VO는 Literal 같은 느낌 (느낌만!) DTOVOData Transfer ObjectValue Object프로세스간 데이터를 전달하는 객체간단한 독립체(Entity)를 의미하는 작은 객체사실상 용도는 둘다 도메인단위의 데이터를 저장하는 비슷한 용도상태 변경 가능Read-Only : 한번 값을 초기화하면 변경불가Business logic까지 담아서 사용하기도.equals()로 비교할때, 모든 값을 비교해야한다ex) 보통 "CarDto"와 같이 클래스이름에 접미사로 용도를 나타낸다 최대한 ..

TDD와 단위테스트는 다르다. 단위테스트로 먼저 연습하고 TDD에 점차 익숙해지자. 추천서적 Unit Test (단위 테스트) ■ Production code ■ Test code => JUnit Annotation을 활용 JUnit 5.x import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class CalculatorTest { Calculator cal; @BeforeEach public void setUp() { cal = ..

package 관련된 클래스들을 모아서 관리할 수 있도록 한다. 한 곳에서 수백, 수천 개의 클래스를 찾는 수고를 덜어준다. 배포할 때 관련된 소스 코드들을 묶어서 배포하고 재사용할 수 있도록 한다. 각 프로젝트나 소프트웨어 간의 소스 코드 충돌을 방지한다. ■ Package Convention 일반적으로 패키지명은 회사 도메인명을 사용한다 모든 패키지 이름은 소문자 패키지명이 java와 javax로 시작해선 안된다. 이 둘은 JDK에서 독점적으로 사용중 보통 src/main/java/.. , src/test/java/.. 형태 ■ import 모든 클래스앞에 패키지명을 사용하는 것은 비효율적. java.util.Scanner sc = new java.util.Scanner(System.in); impo..
- Total
- Today
- Yesterday
- Algorithm
- 프로그래머스
- webhacking.kr
- bfs
- 해외여행
- graph
- Data Structure
- 리버싱
- queue
- Vo
- 회고
- Android
- socket
- Android Studio
- JPA
- mysql
- reversing
- dfs
- Stack
- javascript
- C
- 개발자
- brute-force
- OneToMany
- FRAGMENT
- 우아한 테크코스
- sort
- 웹해킹
- git
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |