Develop

10일차_디자인패턴, 디미터법칙, IO, FileIO 본문

백엔드/KDT_Programmers

10일차_디자인패턴, 디미터법칙, IO, FileIO

230801 2025. 3. 18. 01:43

안녕하세용!

 

10일차 3주 1일차 입니당

이제 자바문법이 몇개만 남겨두고 거의 끝나간다고 합니다.. 짝짝짝 

 

 

공부 내용

데코레이터 패턴(Decorator Pattern)

  • 객체의 기능을 확장할 때, 원래 객체를 변경하지 않고 동적으로 기능을 추가할 수 있도록 하는 패턴
    • 클래스를 직접 수정하지 않고도 객체를 감싸면서 새로운 기능을 추가
  • 상속이 아닌 조합 방식으로 기능을 추가하는 구조

 

 

디미터 법칙(Law of Demeter, LoD)

  • '객체는 자신이 직접적으로 소유하고 있는 객체와만 상호작용해야 하며, 너무 많은 객체와 직접적인 관계를 가지면 안된다' 는 원칙
    • 친구의 친구는 내친구가 아니다 라는 개념으로, 객체 간의 결합도를 낮추고 유지보수를 쉽게 만든다.
  • 객체의 메서드를 호출할 때 . 은 한번만 사용
  • 도매인 객체가 아니라, 데이터 클래스(VO, DTO)라면 지키지 않아도 상관없음

 

IO

  • **파일 및 폴더 생성 (**File 클래스 활용)
  • 절대 경로 vs 상대 경로
  • 디렉토리 존재 여부 확인 후 생성 (exists())

 

FileIO

  • 바이트 기반 파일 입출력
    • FileInputStream (파일을 바이트 단위로 읽음)
    • FileOutputStream (파일을 바이트 단위로 씀)

 바이트 스트림을 이용한 파일 입출력

 파일 복사 기능 (copyFile())

• **스트림을 사용한 후 반드시 close()해야 함 (**try-with-resources 활용 시 자동으로 닫힘)

 

 

FileWR

  • 문자 기반 파일 입출력
    • FileReader (텍스트 파일을 문자 단위로 읽음)
    • FileWriter (텍스트 파일을 문자 단위로 씀)
  • StringBuffer 를 활용하여 문자열 조작
  • 파일을 줄 단위로 읽어오는 방법 (read())

 

 

bufferedIO

  • 버퍼 기반 바이트 스트림
    • 버퍼를 사용하여 입출력 성능 향상
    • 버퍼 크기(기본 8192바이트)를 사용하여 성능을 개선
  • 기본 스트림과 함께 사용 (FileInputStream, FileOutputStream)
    • BufferedInputStream (바이트 입력을 버퍼를 이용해 빠르게 읽음)
    • BufferedOutputStream (바이트 출력을 버퍼를 이용해 빠르게 씀)
  • **바이트 기반 파일 복사 (**copyFile() 메서드 구현)

 

 

bufferdWR

  • 버퍼 기반 문자 스트림
    • 버퍼를 사용하여 문자 기반 입출력 성능 향상
    • 파일을 줄단위로 읽고 쓰기(readLin())
    • 문자열을 한 줄 씩 저장하고 출력하기(write(), StringBuffer 활용)
    • BufferedReader (문자 기반 입력을 버퍼를 이용해 빠르게 읽음)
    • BufferedWriter (문자 기반 입력을 버퍼를 이용해 빠르게 씀)

 

오늘도 수고하셨습니다. 바이바이..