본문 바로가기

SpringFramework4

4. 객체 지향 설계와 스프링 - 스프링과 객체 지향 설계 스프링은 다형성과 OCP, DIP를 다음과 같은 기술로서 지원한다. DI (Dependency Injection) : 의존관계, 의존성 주입 DI 컨테이너 제공 - 클라이언트 코드의 변경없이 기능을 확장하며 쉽게 부품을 교체하듯이 개발할 수 있다. 모든 설계에 역할과 구현을 분리하자. 모든 설계에 인터페이스를 부여하자. 2021. 3. 15.
3. 좋은 객체 지향 설계의 5원칙 (SOLID) S. SRP (Single Responsibility Principle) - 한 클래스는 하나의 책임만 가져야한다. 하나의 책임이란 것은 문맥과 상황에 다라 모호하지만 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른것. O. OCP (Open Closed Principle) - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야한다. 예를 들자면 공연이라는 소프트웨어에 대본(역할)이라는 인터페이스가 있다. 그리고 그 대본을 이용하여 공연을 구현하는 배우들이 있다. 이 배우가 누구로든 바뀔 수 있는게 확장에는 열려있는것이다. 하지만 대본은 공연이 시작되면 바꿀수 없어야한다. A 가 본 공연과 B가 본 공연의 내용은 다를 수 없다. L. LSP (Liskov .. 2021. 3. 15.
2. 스프링 좋은 객체 지향 프로그래밍 - 다형성 Polymorphism 유연하고, 변경이 용이 하도록 이건 핸드폰 예제가 최고다. 내 갤럭시 S20 Note Ultra는 배터리가 수명을 다하면 서비스 센터를 가야한다. 하지만 예전에 쓰던 롤리팝 폰은 배터리가 수명이 다하면 주문해서 새 배터리를 끼우기만하면된다. 다형성이 말하는 유연하고, 변경이 용이하다라는건 이런걸 말하는듯하다. 롤리팝은 좋은 객체지향 핸드폰이며 S20 Note Ultra는 반대인거다. Java에서는 다형성으로 인터페이스를 구현한 객체를 실행 시범에 유연하게 변경할 수 있다. 1 ) 다형성의 본질 - 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다. - 다형성의 본질은 협력이라는 객체사이의 관계에서 시작해야한다. - 클라이언트를 변경하지 않고 서버의.. 2021. 3. 15.
1. 스프링 왜? - 시작하며 교육기관 졸업후 포스트를 남기는건 처음이다. 교육기관의 커리큘럼에 맞춰 파이널 프로젝트를 완성하기까지는 참.. 적은 시간인듯하다. 여기서 완성이란 실제 서비스를 할 수 있는 프로그램 이냐는거다. 물론 내가 만든 프로젝트 (스프링 레거시 기반 의류쇼핑몰) 또한 실제 서비스를 할 수 있는건 전혀~ 아니다. 지금 코드를 보면 놀라 자빠질테니까. 교육기간동안은 눈을 뜨는데 급급해서 아 저건 저렇네 이건 이런건가? 하고 쭉 넘어왔고 이제는 그런 실수를 범하고싶지는 않다. 스프링.. 알고 써야하지않을까? 개발은 하고 있지만 "이건 이런 스프링의 장점을 살린 이런 플로우야~ 난 이렇게 생각하기에 이렇게 구현했어" 라는 확신이 없다. 그저 선임자들의 코드들을보며 "아 이렇게 하는거구나" 하고 그저 따라하는.. 2021. 3. 15.