백앤드/SpringBoot + Java 좋은 객체 지향 설계 4

[SpringBoot + Java] 좋은 객체 지향 설계(싱글톤)

들어가며 - 인프런 김영한 님의 싱글톤 강의 정리입니다. - 웹 어플리케이션은 보통 수십, 수백명의 고객의 요청을 동시에 수행 합니다. - 이 때 각 요청이 들어 올 때 마다 Service class 에서 객체를 새로 만들어 요청을 수행 한다면 너무 많은 객체가 생성 되어 메모리가 낭비 됩니다. 싱글톤(순수 자바) - 싱글톤을 간단히 정의 하면 클래스의 인스턴스가 딱 하나만 생성 되는것을 보장 하는 패턴 입니다. - 즉 위와 같은 상황에서 단 하나의 인스턴스 만을 만들어 이를 공유 하며 사용 하게 하는 것입니다. - 이렇게 하기 위한 방법중 하나가 아에 2개가 생성되지 못하게 하는 것 입니다. . 아래와 같이 Service 를 만들게 되면 생성자가 private 이기 때문에 외부에서는 생성 할 수 없게 ..

[SpringBoot + Java] 좋은 객체 지향 설계(spring 의 container)

들어가며 - 앞서 Config 를 사용 했던방식이 자바 설정 class 로 Spring Container를 흉내 낸 것입니다. - 기존 코드를 수정하여 Spring 에서 는 어떻게 사용 하는지 알아 보겠습니다. 개념 - 우선 Spring 이 어떻게 작동 되는지를 알아 보겠습니다. - Container 에는 Bean 에 등록 된 객체들이 들어 가게 됩니다. . 따라서 Config 에 @Bean annotation 을 등록 해 준 class 가 container 에 들어가게 됩니다. - 이 후 Container 를 생성 해 주면 파라미터로 넘어온 class 정보를 이용해 Bean 을 등록 한다. 사용법 - 기존의 Config class 위에 @Configuation annotation 을 달아 주어 conf..

[SpringBoot + Java] 좋은 객체 지향 설계(DI)

들어가며 - 인프런 김영한 님의 "객체 지향 원리 적용" 강의 정리 내용입니다. - 앞선 설명에서 SOLID 를 지킨 설계가 좋은 객체 지향 설계라고 하였습니다. - 이번 시간에는 쉽게 위반 될 수 있는 원칙과 해결 법에 대해 알아 보겠습니다. - SpringBoot 를 사용하면 쉽게 할 수 있지만 우선 JAVA 로만 해보도록 하겠습니다. 문제 발견 - "Service" 객체와 여기서 사용 하는 "Repository" class 가 있다고 생각 해 보겠습니다. - 보통 Service 에서 "Repository"구현체를 사용 하기 위해 하는 방법은 다음 과 같습니다. import ~.ARepository; // Repository 를 import 함 //... public class SerivceImpl ..

[SpringBoot + Java] 좋은 객체 지향 설계(SOLID)

들어가며 - 인프런 김영한 님의 "좋은 객체 지향 설계과 스프링" 강의 정리 내용입니다. - 좋은 프로젝트 설계란 프로그램을 유연하고 변경에 용이하게 만들었을 때를 말한다. . 이렇게 개발 하게 되면 말 그대로 유지 보수에 효과적이며 보다 체계적으로 만들 수 있다. 객체지향과 다형성 - 객체 지향의 특징으로는 "추상화, 캡슐화, 상속성" 등이 있지만 좋은 설계에 가장 중요한 요소는 "다형성" 이다. - 다형성 . 다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미 하며 여기서는 기능을 역할과 구현으로 구분 한다고 보았다. . 예를 들어 운전을 하기 위해서 "운전자 역할" 과 "자동차 역할" 을 구분 하고 이 자동차를 또 자동차 구현으로 구분 짓는다. . 이렇게 하게되면 미래에 자동자가 바뀌..