Spring/TobySpring6
-
지금까지 스프링을 제외하고 만든 코드에서 객체지향 설계원칙과 객체지향 디자인 패턴이 어떤 것이 있었는지 알아보자 개방-폐쇄 원칙(Open-Closed Principle)(OCP)- 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 인터페이스를 이용하여 추가적인 동작을 작성하는 부분 -> 확장확장을 통해 새로 추가된 기능을 사용하기 위해서 caller의 코드가 변경되면 안 된다. -> 폐쇄 높은 응집도와 낮은 결합도(High Coherence and low coupling)- 응집도가 높다 : 하나의 모듈이 하나의 책임 또는 관심사에 집중돼 있다- 결합도가 낮다 : 느슨하게 연결되어 있다(구체 클래스에 대한 선언이 적다) 전략 패턴(Strategy Pattern)객체들이 할 수 있는..
토비의 스프링 6 - 원칙과 패턴지금까지 스프링을 제외하고 만든 코드에서 객체지향 설계원칙과 객체지향 디자인 패턴이 어떤 것이 있었는지 알아보자 개방-폐쇄 원칙(Open-Closed Principle)(OCP)- 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 인터페이스를 이용하여 추가적인 동작을 작성하는 부분 -> 확장확장을 통해 새로 추가된 기능을 사용하기 위해서 caller의 코드가 변경되면 안 된다. -> 폐쇄 높은 응집도와 낮은 결합도(High Coherence and low coupling)- 응집도가 높다 : 하나의 모듈이 하나의 책임 또는 관심사에 집중돼 있다- 결합도가 낮다 : 느슨하게 연결되어 있다(구체 클래스에 대한 선언이 적다) 전략 패턴(Strategy Pattern)객체들이 할 수 있는..
2024.11.03 -
상속을 통한 확장기존 서비스 도메인에 다양한 확장 기능을 붙이고 싶을 때 몇몇 기능들은 그대로 동일하게 쓰고, 몇몇 기능만 클래스별로 구분하고 싶은 경우가 있을 수 있다.이러한 경우에 abstract 키워드를 이용한 상속을 사용하면 도움이 될 수 있다. 클래스 별로 구분하고 싶은 기능은 abstract method로 선언만 해두고구현 클래스에서 해당 abstract class를 extends 하면 된다. 이 또한 오브젝트 책에서 언급된 내용이었다.상속을 통해 중복 코드를 제거할 수 있지만, 부모가 수정되는 경우 자식에게도 영향을 끼칠 수 있다(캡슐화를 약화시키고 결합도를 높인다)(https://kkang-joo.tistory.com/135) 클래스의 분리 상속을 사용하면 겪는 다양한 단점으로, 상속을..
토비의 스프링 6 - 상속을 통한 확장상속을 통한 확장기존 서비스 도메인에 다양한 확장 기능을 붙이고 싶을 때 몇몇 기능들은 그대로 동일하게 쓰고, 몇몇 기능만 클래스별로 구분하고 싶은 경우가 있을 수 있다.이러한 경우에 abstract 키워드를 이용한 상속을 사용하면 도움이 될 수 있다. 클래스 별로 구분하고 싶은 기능은 abstract method로 선언만 해두고구현 클래스에서 해당 abstract class를 extends 하면 된다. 이 또한 오브젝트 책에서 언급된 내용이었다.상속을 통해 중복 코드를 제거할 수 있지만, 부모가 수정되는 경우 자식에게도 영향을 끼칠 수 있다(캡슐화를 약화시키고 결합도를 높인다)(https://kkang-joo.tistory.com/135) 클래스의 분리 상속을 사용하면 겪는 다양한 단점으로, 상속을..
2024.10.27 -
2번째 챕터의 첫 시작은 이론으로 시작한다.오브젝트, 의존관계가 무엇인지 정의한다. 오브젝트오브젝트와 클래스는 다르다객체지향의 사실과 오해, 오브젝트 책을 통해서 많이 들어서 해당 내용은 인지하고 있다. 클래스는 오브젝트의 청사진과 같다. 클래스의 인스턴스 = 오브젝트이렇게 표현하면 둘의 관계가 보인다.추가적으로 자바의 배열도 오브젝트라고 한다. 의존관계 의존관계도 최근 보고 있는 오브젝트 챕터에서 언급된 내용이다. 컴파일의 의존관계, 런타임의 의존관계클래스를 추상화시켜 거기에 의존하라(런타임 의존관계가 달라짐) 의존 관계를 가지고 있으면 callee가 변경되면 caller에도 영향을 미칠 수 있다. 관심사의 분리Separation of Concerns (SoC)코드를 읽으며 무슨 일을 하는지 한참..
토비의 스프링 6 - 오브젝트와 의존관계2번째 챕터의 첫 시작은 이론으로 시작한다.오브젝트, 의존관계가 무엇인지 정의한다. 오브젝트오브젝트와 클래스는 다르다객체지향의 사실과 오해, 오브젝트 책을 통해서 많이 들어서 해당 내용은 인지하고 있다. 클래스는 오브젝트의 청사진과 같다. 클래스의 인스턴스 = 오브젝트이렇게 표현하면 둘의 관계가 보인다.추가적으로 자바의 배열도 오브젝트라고 한다. 의존관계 의존관계도 최근 보고 있는 오브젝트 챕터에서 언급된 내용이다. 컴파일의 의존관계, 런타임의 의존관계클래스를 추상화시켜 거기에 의존하라(런타임 의존관계가 달라짐) 의존 관계를 가지고 있으면 callee가 변경되면 caller에도 영향을 미칠 수 있다. 관심사의 분리Separation of Concerns (SoC)코드를 읽으며 무슨 일을 하는지 한참..
2024.10.19 -
인프런 강의를 통해서 학습한 내용을 단순히 옮겨 적는 게 아니고생각한 부분을 적어보자코드는 github 들어가면 그냥 볼 수 있는 부분이니깐나중에 생각하기 쉽게 당시에 들었던 생각을 적어보고, 중요하다고 생각하는 내용 위주로 작성해 보자 개발환경 준비gradle, java17스프링 부트가 아닌 스프링에 대한 강의지만 스프링 각각의 프로젝트 의존성을 넣어서 관리하기는 힘들다.미리 호환 버전을 패키징 해둔 스프링 부트로 프로젝트 의존성을 사용하자 처음에는 스프링을 사용하지 않고 서비스 요구사항에 맞는 내용을 구현한다.추후에 스프링을 통해서 해당 코드가 어떻게 변화하는지 잘 관찰해 보자 java17 record 이용 - 생성자, getter, setter 없이 데이터 조작이 가능다만, 한번 값을 넣으면 변경 ..
토비의 스프링 6 - 스프링 개발 시작하기인프런 강의를 통해서 학습한 내용을 단순히 옮겨 적는 게 아니고생각한 부분을 적어보자코드는 github 들어가면 그냥 볼 수 있는 부분이니깐나중에 생각하기 쉽게 당시에 들었던 생각을 적어보고, 중요하다고 생각하는 내용 위주로 작성해 보자 개발환경 준비gradle, java17스프링 부트가 아닌 스프링에 대한 강의지만 스프링 각각의 프로젝트 의존성을 넣어서 관리하기는 힘들다.미리 호환 버전을 패키징 해둔 스프링 부트로 프로젝트 의존성을 사용하자 처음에는 스프링을 사용하지 않고 서비스 요구사항에 맞는 내용을 구현한다.추후에 스프링을 통해서 해당 코드가 어떻게 변화하는지 잘 관찰해 보자 java17 record 이용 - 생성자, getter, setter 없이 데이터 조작이 가능다만, 한번 값을 넣으면 변경 ..
2024.10.16