22.11.23 TIL - 객체 지향 원리 적용 그리고 static
오늘은 휴가를 내고 집에서 <스프링 핵심원리 - 기본편> 강의를 들었다. 생각만큼 많이 듣지는 못했다. 연말에 휴가를 다 써야 하는데 12월 되면 바빠서 못 쓸 것 같아서 다른 사람들 휴가 쓸 때 같이 썼다
1.자바 코드로 회원, 주문, 할인 도메인과 인터페이스 예제를 작성하였다. 이 예제 코드도 좋은 코드지만 SOLID 원칙에 OCP과 DIP 원칙에 위배가 되었다.
해결 방법은 각 Service 클래스에 인스턴스 변수를 생성자 인자로 넣어준다. 그리고 AppConfig 파일을 만들어서 그 안에 Service 구현체를 반환해주고 해당 Service를 사용하려는 지점에 AppConfig를 호출하면 AppConfig에서 필요한 인스턴스를 꺼내어 사용할 수 있다.
이렇게 하면 각 Service들은 각자의 역할에만 집중할 수 있으며 확장은 가능하지만 수정은 안되는 코드를 작성해줄 수 있다.
어제 객체지향 원리에 5가지 원칙에 대해서 잘 이해가 안 되었지만 코드로 작성해보니 좀 더 이해할 수 있었다. 그리고 Spring을 사용하기 전에 그냥 자바 코드로 의존성 주입을 경험해볼 수 있었다.
2.그리고 static을 왜 사용하는지에 대해서도 알았다. 그 전에는 그냥 코드 따라 칠 때 있길래 생각없이 따라 작성했다. static은 프로그램이 실행될 때 클래스에서 딱 한번 생성된다. 인스턴스가 생성될 때 static 변수는 생성되지 않으며 다른 인스턴스들은 해당 클래스 내부에 있는 static변수를 공유한다.
우연히 다른 사람이 질문한 글을 보았는데 완전 유레카였다. 예전에는 왜 static을 이해하지 못했을까...
static 참조: https://www.inflearn.com/questions/240845
내일이나 모래부터 Spring로 프로젝트 시작할 거 같은데 처음 해보는거라 너무 긴장된다... 잘 할 수 있을까...
댓글을 작성해보세요.
멋집니다..