Java(28)
-
[패캠강의] 팩토리 메서드 패턴
Factory Method Pattern 하위 클래스에게 위임하는 패턴 중 하나입니다. 팩토리를 하나 두고, 들어오는 매개 변수에 따라서든 Map에 해당되는 keyword에 따라서든 인스턴스를 다르게 반환해줄 수 있는 패턴입니다. 팩토리에서 조건이나 인스턴스 관리를 맡아하면 하위 클래스는 변경에 대처할 부분이 적어지는 장점이 있습니다. JDK에서 사용되는 팩토리 메서드는 getInstance()가 java.util.Calendar, NumberFormat, ResourceBundle에서 사용되고 있습니다. 레퍼 클래스 Integer, Boolean etc 들에서 value들을 측정하기 위해 valueOf() 메서드를 사용할때도 팩토리 메서드 패턴을 사용합니다. public class Calendar { ..
2022.01.01 -
[패캠강의] 1장_객체지향의 설계
디자인 패턴에 대해 알아봅시다 디자인 패턴을 잘할 수 있는 방법? 경험, (삽질)이 디자인 설계를 실제로 늘 수 있게 도와줍니다. 설계를 여러번 실패하면서 코드를 짜봐야 알게됩니다. 객체지향설계 객체의 blue print가 클래스, 기능들이 메서드입니다. 추상화 어떤 영역에서 필요한 속성이나 기능을 추출하는 작업 인터페이스 객체를 클라이언트에 필요한 기능만 오픈할 수 있고 책임을 전달할 수 있는 매개? 필요한 기능만을 오픈한다는 건 객체지향의 캡슐화와 연관되어 있습니다. 상속성 일반적인 객체보다 구체적인 객체를 말합니다. 상위 클래스를 상속한 하위 클래스는 필수 기능들을 재정의 할수도 있습니다. 다형성 같은 코드가 다른 결과를 만들어 내는 메서드입니다. 응집도, 결합도 응집도가 높은 클래스는 단일 책임의..
2021.12.31 -
[Supplier] What is Java 8 Supplier interface?
What is Java 8 Supplier interface? Optional을 사용하다보면 파라미터 타입에 Supplier Interface인 경우가 있습니다. 이는 argument를 가지지 않고 결과를 리턴해주는 연산을 수행해주는 인터페이스 인데요, get() 메서드 즉 하나의 추상 메서드만 가지는 functional method 입니다. (예제코드) static Expression of(String expression) { return Arrays.stream(values()) .filter(v -> matchExpression(v, expression)) .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.format("%s는 ..
2021.09.11 -
[Java] Java Stream(스트림)
Java Stream(스트림) 참고영상: Java 8 Streams Tutorial 1) Stream? 스트림은 Collections, Lists, Sets, ints, longs, doubles, arrays, files 등에서 사용이 가능합니다. 스트림 기능은 중개자(intermediate)나 종결자(terminal)로 나뉩니다. 2) 중개자 Stream 스트림 중개자 연산은 복수 사용이 가능합니다. 데이터가 클 경우 필요한 데이터로만 가공해줄 수 있습니다. 주로 쓰는 연산은 filter(), map(), sorted(), findFirst()가 있습니다. 3) 종결자 Stream 스트림 종결자 연산은 단일 사용만 가능합니다. 예를 들어 반복해서 값을 리턴해주는 forEach처럼요. collect는 ..
2021.09.03 -
[스프링 부트 어드민 페이지] 4. QueryMethod
Github 코드 QueryMethod QueryMethod란 JPARepository 메서드가 findAll(), findById(), save() 등 정형화 되어있는데 커스터마이징 하여 원하는 WHERE절 조건 데이터를 입력해 데이터를 조회할 수 있는 메서드입니다. 1 2 3 4 5 6 7 8 9 10 @Repository public interface UserRepository extends JpaRepository { Optional findByAccount(String account); Optional findByEmail(String email); Optional findByAccountAndEmail(String account, String email); } Colored by Color S..
2021.05.17 -
[스프링 부트 어드민 페이지] 2. JPA Repository
Github 코드 JPA JPA는 Java Persistence API로 RDB 데이터베이스 정보를 Java ORM(Object Relational Mapping)으로 활용할 수 있도록 도와주는 라이브러리 입니다. 객체를 매핑시키는 Hibernate도 JPA를 상속한 프레임 워크입니다. JPA의 장점은 Java 객체를 DB와 호환할 수 있다는 점이 두드러지게 나타납니다. 쿼리보다 객체 지향코드에 집중할 수 있게 말이죠. 들어가기에 앞서 Spring Web MVC 패턴 구조를 간략한 도식화로 보겠습니다. DispatcherServlet은 Servlet(웹 서버의 요청-응답 처리방식이 가능하도록 확장해주는 Java 클래스)이 HTTP 요청을 Dispatch(분담시키다) 하는 Web MVC 모델의 Reques..
2021.05.12