Java

    [Java] 불변 객체(Immutable Object) 에 대해 알아보자

    [Java] 불변 객체(Immutable Object) 에 대해 알아보자

    예제 및 테스트 코드는 github 에서 확인 가능합니다. 불변 객체(Immutable Object)란? 객체 생성 이후 내부 상태가 변하지 않는, 변경할 수 없는 객체를 이야기합니다. 불변객체는 내부 상태를 변경하는 메소드를 제공하지 않거나 방어적 복사를 통해 데이터를 제공합니다. 대표적으로 Java의 String, Integer, Long, Double 등등 있습니다. 불변 객체(Immutable Object) 의 장점 Thread-Safe하여 병렬 프로그래밍에 유용하고 동기화를 고려하지 않아도 된다. 멀티 스레드 환경에서 발생하는 주된 문제는 공유자원에 대해 서로 변경하다보니 값이 덮어씌워지는 문제가 있습니다. 하지만 불변객체는 항상 동일한 값을 보장하므로 동기화를 신경쓸 필요가 없다는 장점이 있습..

    [Java] N개 이상의 값으로 그룹핑해보기

    [Java] N개 이상의 값으로 그룹핑해보기

    예제 및 테스트 코드는 github 에서 확인 가능합니다. Stream api 그룹핑 방법 Java 에서는 stream api 를 이용하여 손쉽게 grouping 을 진행할 수 있습니다. 예시를 통해 그룹핑 코드를 작성해보겠습니다. 아래는 그룹핑에 사용될 예시 데이터입니다. User.java public class User { private Long id; private String name; private Gender gender; // MALE, FEMALE private Integer age; private City city; // SEOUL, TOKYO, NEW_YORK, LA, PARIS } id 이름 성별 나이 도시 1 user1 MALE 22 SEOUL 2 user2 FEMALE 25 SEO..

    OCP(Open-Close-Principle) 개방 폐쇄 원칙이란?

    OCP(Open-Close-Principle) 개방 폐쇄 원칙이란?

    예제 및 테스트 코드는 github 에서 확인 가능합니다. OCP (Open Closed Principle) 정의 개방 폐쇄 원칙 소프트웨어 개체는 확장에 열려있어야 하고 수정에는 닫혀있어야 한다는 원칙. OCP (개방 폐쇄 원칙)의 의미 어떤 기능에 대해 추가 요구사항이 나타나도 그 기능을 사용하는 기존 코드는 수정되지 않아야 한다는 의미입니다. 확장되는 기능이 기존 코드와 의존을 하게되면 추가되는 요구사항에 유연하지 못하고 개발자가 유지보수하는데 어려움이 있습니다. 예제 코드 OCP (개방 폐쇄 원칙) 을 준수하지 않은 예시와 준수한 예시 두가지를 들어 비교해보겠습니다 스카이스캐너 , 마이리얼트립에서 제공하는 항공편 예약 서비스를 만든다고 가정해보겠습니다. 그렇다면 예약을 하기 위해서는 각 항공사와 ..