Java/공부

    디자인패턴 / Builder 패턴을 알아보자

    개요Builder 패턴을 사용해야 하는 이유와 장단점을 알아봅니다. Builder 패턴이 나오게 된 과정생성자 패턴이란?생성자 패턴이란 필드를 직접 입력받는 생성자를 만들어 객체를 생성하는 방법입니다.프로젝트를 진행하며 DTO 를 사용하게됩니다.public class User { private String name; private String age; private String address;}위와같이 생성자 패턴을 사용하여 DTO를 설계했을때 몇가지 단점이 있습니다. 단점1. 파라미터 순서를 정확히 기억해야한다.User user = new User("홍길동", "11", "서울시");id, password, name 순으로 무조건 입력해줘야 합니다 지금은 파라미터가 3개지만 더 늘어난다면 힘..

    Dependency Injection

    Dependency Injection (DI)어떤 객체가 자신의 의존 객체를 직접 생성하지 않고 외부로부터 주입받는 설계 방식중 하나이다. MemberService memberService = new MemberService(new MemberRepository()); 이렇게 직접 생성하는 것이 아니라 아래처럼 외부 (AppConfig 나 Spring Container) 에서 주입받는다@Beanpublic MemberService memberService(){ return new MemberService(memberRepository());} 위와 같은 방식으로 코드를 설계하면 몇가지 장점이 있다객체 간 결합도 낮춤, 유지보수 쉬움, 테스트하기 쉬운 구조 설계 가능 개발을 할때 DB가 계속해서 바뀐다면 ..

    JAVA / Arrays.sort() 오름차순 배열 정렬

    https://www.acmicpc.net/problem/10818백준 10818 번 배열을 이용해서 최댓값, 최솟값을 구하는 문제를 풀던도중 무작위로 입력받는 숫자들의 최댓값과 최솟값을 정렬해야하는데 이걸 고민하던 도중 오름차순으로 배열을 정렬해주는 메소드를 알게되었다 먼저 이걸 쓰기전 코드이다import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.StringTokenizer;public class Main{ public static void main(St..

    JAVA / throws IOException

    BufferedReader 와 BufferedWriter 를 쓰다보면 public class Main{ public static void main (String[] args)throws IOException{ } } public static void main(String [] args) throws IOException 이 IOException 를 사용해주지 않으면 컴파일 에러가 뜨는데 그 이유는 자바는 다른 프로그램 언어에 비해 안정성을 최 우선으로 하기때문에 입력상황이 발생할 경우 예외를 처리하거나 전가하는 작업을 반드시 해주어야한다 Scanner는 제외이다

    JAVA / BufferedReader, BufferedWriter (백준 15552번)

    백준 문제를 풀다가 늘 사용하던 Scanner 를 쓰면 안되는 문제를 만났다 https://www.acmicpc.net/problem/15552 시간제한이 있어서 Scanner 말고 다른방법을 사용해야하는 문제다 문제 첫번째로 테스트케이스의 개수를 입력받은 뒤 A+B 를 테스트케이스의 개수만큼 입력해준다 테스트 케이스에 입력한 수 만큼 A+B 를 입력했다면 입력한 테스트케이스들의 답이 출력되는 방식이다 Scanner 말고 다른 방법으로는 BufferReader 를 사용하는 방법이있다 BufferReader 는 Scanner 보다 빠르다 (입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성을 높인다) 하지만 BufferReader 는 Enter 만 경계로 인식하고 받은 데이터가 ..