Java 54

[디자인 패턴] 생성패턴 - 추상 팩토리 패턴 (Abstract Factory patterns)

(인프런) 코딩으로 학습하는 GoF의 디자인 패턴 - 백기선, 강의를 보고 정리한 글입니다. 코드는 GitHub 에 있습니다 #1. 객체 생성 관련 패턴 #2. 구조 관련 패턴 #3. 행동 관련 패턴 싱글톤 패턴 팩토리 메소드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 어댑터 패턴 브릿지 패턴 컴포짓 패턴 데코레이터 패턴 퍼사드 패턴 플라이웨이트 패턴 프록시 패턴 책임 연쇄 패턴 커맨드 패턴 인터프리터 패턴 이터레이터 패턴 중재자 패턴 메멘토 패턴 옵저버 패턴 상태 패턴 전략 패턴 템플릿 메소드 패턴 방문자 패턴 ✔️ 추상 팩토리 패턴 추상 팩토리 패턴은 팩토리 메소드 패턴과 팩토리 부분은 매우 유사하지만, 팩토리를 사용하는 Client에게 맞춰져 있습니다. 추상 팩토리 패턴의 목적은 : 팩토리에..

Java/Design Pattern 2023.02.09

[디자인 패턴] 생성패턴 - 팩토리 메소드 패턴이란 (Factory Method patterns)

(인프런) 코딩으로 학습하는 GoF의 디자인 패턴 - 백기선, 강의를 보고 정리한 글입니다. 코드는 GitHub 에 있습니다 #1. 객체 생성 관련 패턴 #2. 구조 관련 패턴 #3. 행동 관련 패턴 싱글톤 패턴 팩토리 메소드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 어댑터 패턴 브릿지 패턴 컴포짓 패턴 데코레이터 패턴 퍼사드 패턴 플라이웨이트 패턴 프록시 패턴 책임 연쇄 패턴 커맨드 패턴 인터프리터 패턴 이터레이터 패턴 중재자 패턴 메멘토 패턴 옵저버 패턴 상태 패턴 전략 패턴 템플릿 메소드 패턴 방문자 패턴 ✔️ 팩토리 메소드 패턴 구체적으로 어떤 인스턴스를 만들지를 서브 클래스가 정하는 패턴을 말합니다. 팩토리 메소드 패턴은, 기능혹은 역할에 따른 다양한 구현체가(Product) 가 존재하..

Java/Design Pattern 2023.02.08

[디자인 패턴] 생성패턴 - 싱글톤 패턴이란 (Singleton patterns)

(인프런) 코딩으로 학습하는 GoF의 디자인 패턴 - 백기선, 강의를 보고 정리한 글입니다. 코드는 GitHub 에 있습니다 #1. 객체 생성 관련 패턴 #2. 구조 관련 패턴 #3. 행동 관련 패턴 싱글톤 패턴 팩토리 메소드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 어댑터 패턴 브릿지 패턴 컴포짓 패턴 데코레이터 패턴 퍼사드 패턴 플라이웨이트 패턴 프록시 패턴 책임 연쇄 패턴 커맨드 패턴 인터프리터 패턴 이터레이터 패턴 중재자 패턴 메멘토 패턴 옵저버 패턴 상태 패턴 전략 패턴 템플릿 메소드 패턴 방문자 패턴 ✔️ 싱글톤 패턴 인스턴스를 오직 한개만 제공하는 클래스 ✔️ 싱글톤 패턴을 사용하는 이유 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개 일 때 문제가 생길 수 있는 객..

Java/Design Pattern 2023.02.08

[JAVA] 그 날의 주차 구하기 (week of day)

저는 일관성 있는 데이터를 저장하기위해서, 주 간 어떤날을 입력하든 그 주의 특정 요일 날짜를 반환하는 로직이 필요했습니다. 이에 대한 해답을 자바 8 이후로 나온 날짜및 시간 작업 라이브러리 중, TemporalAdjuster 와 DayOfWeek Enum 클래스를 사용하였습니다. Code public final class DateUtil { private final LocalDate date; public static DateUtil of(final LocalDate date) { return new DateUtil(date); } public int getCompareDayOfWeekNumber(final DayOfWeek dayOfWeek) { return dayOfWeek.getValue() -..

Java/Java 문법 2023.01.12

[Java] Double to Long 형 변환

아래의 3가지 방법이 있는데, 다른 타입으로 명시적으로 변환하는 캐스팅 (long) a 가 별로 안좋을거라 생각했는데, 박싱 후 언방식하는 방식이 더 안좋을 거 같다는 생각이 들었슴당.. 생각난김에 짧은 기록 ㅎㅎ @Test void test() { double a = 12.23213; //명시적 형변환 assertThat((long) a).isEqualTo(12L); assertThat(1 / (long) a).isEqualTo(1 / 12L); //박싱 후 언방식 - 비추 assertThat(Double.valueOf(a).longValue()).isEqualTo(12L); //Math 함수의 사용 assertThat(Math.round(a)).isEqualTo(12L); }

Java/Java 문법 2022.12.27

[Java - TIL] ❓객체 상속 시 this 가 가르키는 객체는 무엇일까 (내적 일관성)

아래 코드의 정답은..!?!?!? @Test void test(){ A a = new B(); a.run(); } class A { protected void print(){ System.out.println("A run"); } public void run(){ this.print(); } } class B extends A { protected void print(){ System.out.println("B run"); } } 📗 객체지향적인 언어를 만들 때 약속했다고 합니다. 모든 this 는 생성된 객체를 가르키기로 약속했기 때문에. 상속받은 B 객체의 부모객체의 A 의 메소드에서 this를 호출해도, 생성된 객체인 B 객체를 가르키는 것입니다! ➡️ 이게 내적일관성에 대한 약속 비야네 스트로스트..

Java 2022.10.06

[JAVA] 지역변수 vs 전역변수 (feat. java8 JVM Static Object Heap Area)

자바 지역변수 vs 전역변수 .. 이 글을 읽고있는 당신의 선택은!?!? 📗 고민의 시작은 이러했습니다. 단 하나의 메소드에서만 사용되는 지역변수를 전역변수로 뺀다면 메모리 낭비가 이루어지지않을까 ?? ➡️ 전역변수로 지정해줄때의 장점은 뭐지? 어떤상황에서 전역변수가 더 유용하게 사용되는거지?? 📝 요약 더보기 java 8 이후 static object 는 jvm 힙 메모리 영역에서 관리된다. 고로 garbage collector 의 영향을 받느다. 지역변수 vs 전역변수의 선택은 사용성에 집중하자. 메모리를 아끼기위해 지역변수로 선언했지만, 해당 메소드에 많은 생성과 파괴가 일어나면 io 자원을 많이 잡아먹게된다. 이런 상황에서 전역변수는 유용하다. 잘생각해보자! 자바 8 이후 static object..

Java/Java 문법 2022.09.26

추상클래스의 객체 생성 (추상클래스 인스턴스) - 추상클래스를 사용하는 이유

👏🏻 요약 더보기 객체생성을 하지 않아도 된다는 의도를 명확히 하기위해서 + 의도치않은 메모리 낭비를 막기위해 김영한님 강의를 보는 도중 상수 정보만을 가진 클래스를 만들었는데, 이 클래스가 상수 정보만을 담고있기때문에 객체생성을 막기위해 abstract class 로 선언을 하는 것을 보고 조금 의아해서 글을 남겨보고자 합니다. 김영한님 왈) 상수를 모아서 쓴거기 때문에 객체를 생성하면 안되겠죠? 그래서 abstract 로 객체 생성을 막아놓았습니다. //상수 데이터만 담은 class - 객체 생성하지 않기위해 추상클래스로 public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/t..

Java/Java 문법 2022.09.19

[Java] 스트림에서 오토박싱 (박싱, 언방식)이 일어나는 이유

스트림 병렬처리를 진행할 때, paraller Stream 이 순차적인 iterate(반복자) 보다 성능이 느리게 나오는 경우가 있습니다. ❓ 스트림 병렬처리의 성능이 낮게나오는 이유 중 하나로, 기본형(원시 타입) 특화되지 않은 스트림을 초러할 때 수반되는 오토박싱, 언방식 등의 오버헤드를 수반하기 때문이다. 라는 이유가 언급되었고, 그렇다면 스트림에서 왜 오토박싱이 일어나는지 잊어먹지 않기위해 정리합니다. 📗 요약 : 제네릭 때문에 자바 Stream 에서 내부적으로 오토박싱이(auto boxing) 일어나는 이유 📌 modern java in action 103 쪽을 보면 이유 1 👏🏻 함수형 인터페이스들에 제네릭 파라미터가 쓰여져있고, Java 에서 generice 은 참조형만 사용할 수 있다고 합..

Java/Java 문법 2022.09.16

5. JAVA 기본 타입 vs 참조 타입 (with 래퍼클래스를 사용해야할 때) ➡️ Integer(Wrapper Class) 보다 int(기본 타입)

저는 래퍼클래스가, Null을 처리할 수 있기 때문에, 더 범용성이 좋고, 유용하다고 생각했습니다.. 하지만, 온보딩 과제를 진행할때, 매개변수를 사용할 때 래퍼클래스보단, 기본타입을 이용하는게 좋다는 피드백을 받았고, 이번 포스트이에는, 그 이유에대해서 생각해본 것을 정리해볼까 합니다..! [목차] JAVA 자료형 종류와 차이점 (기본타입 자료형 vs 참조타입 자료형) Wrapper Class란 Wrapper Class 특징 String의 생성과 비교 방식 Wrapper Class를 사용해야할 때 📌 Java의 자료형 2가지 1. 기본 타입 자료형 (Primitive Type) int, boolean, double, float 등등 2. 참조 타입 자료형 (Refernce Type) Integer, B..

반응형