💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다. 해당 장에서는 스프링 삼각형이라 불리는 IoC/DI, AOP, PSA에 대해 간단하게 다룬다. 스프링을 전문적으로 다루는 도서가 아니기에, 상세한 정보는 포함되어있지 않다. 『추후 토비의 스프링』 도서를 통해 내용을 보완할 예정이다. ☁️ IoC/DI IoC(Inversion of Control), DI(Dependency Injection) [Spring] 제어의 역전 (IoC) 제어의 역전(IoC) 사람은 이름을 가진다. 이름은 사람의 상태이다. 살아가면서 스스로 관리하며 사용한다. 하지만 이름은 태어나면서 부모님에 의해 결정된다. 나 스스로의 상태이며, 내가 사용..
JAVA
💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다. 해당 도서는 디자인 패턴 전문 서적이 아니기에 디자인 패턴에 대해 상세하게는 다루지 않는다. 따라서 추후 『헤드퍼스트 디자인패턴』 도서를 통해 내용을 보완할 예정이다. ☁️ 디자인 패턴 객체 지향 4대 특성(캡상추다)은 객체 지향에서 지원하는 도구이다. 객체 지향 5원칙(SOLID)은 도구를 올바르게 사용하는 방법이다. 디자인 패턴은 도구를 올바르게 사용하여 프로그래밍 하도록 도와주는 비법이다. 디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 베스트 프렉티스를 정리한 것이다. 디자인 패..
☁️ Strategy 스프링에서는 빈의 인스턴스 생성 전략에 대해 전략 패턴을 사용하여 구현했다. 전략 패턴은 디자인 패턴의 꽃이라고도 한다. 전략 패턴에느 3가지 요소가 사용되며 아래와 같다. 전략을 가지는 전략 객체 전략을 객체를 사용하는 컨텍스트 전략 객체를 생성하고, 컨텍스트에 주입하는 클라이언트 클라이언트가 전략 객체를 생성하고 컨텍스트에 주입함으로써, 컨텍스트는 외부에서 주입받은 전략에 따라 상이한 행동을 하는 것이 전략 패턴이다. 학교에서 선생님이 각 학생에게 필요한 과목을 학습하라고 명령하는 상황을 예시로 들어보자 과목: 전략을 가지는 전략 객체 (수학, 과학, 국어) 학생: 전략 객체를 사용하는 컨텍스트 (수학 학습, 과학 학습, 국어 학습) 선생님: 전략(과목) 객체를 생성하고 컨텍스트..
☁️ Template Method 메서드를 템플릿화 하는 패턴이다. abstract 클래스로 선언하여 구현 메서드에 템플릿 로직을 생성한다. 템플릿 로직에서 동작할 특정 동작은 abstract 메서드로 선언하여 이를 확장하는 클래스에게 행동을 위임한다. // AbstractClass abstract class CoffeeTemplate { final void makeCoffee() { boilWater(); brewCoffeeGrounds(); pourInCup(); addCondiments(); System.out.println("Coffee is ready!"); } abstract void boilWater(); abstract void brewCoffeeGrounds(); abstract void..
☁️ Proxy 프록시는 대리자, 대리인이라는 뜻을 가진 단어이다. 대리자는 누군가를 대신해서 역할을 수행하는 존재이다. 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 객체를 바로 사용하지 않고 대리자를 세움으로써 객체의 로직을 조정할 수 있는 패턴이다. 로깅, 캐싱, 보안 등에서 사용된다. 코드로 바로 살펴보자. 아래와 같이 Drivable 인터페이스를 구현하는 독립적인 Car, Bike 클래스가 있다. interface Drivable { void drive(); } class Car implements Drivable { @Override public void drive() { System.out.println("부릉부릉"); } } class Bike implements Driva..
☁️ 디자인 패턴 객체 지향 4대 특성(캡상추다)은 객체 지향에서 지원하는 도구이다. 객체 지향 5원칙(SOLID)은 도구를 올바르게 사용하는 방법이다. 디자인 패턴은 도구를 올바르게 사용하여 프로그래밍 하도록 도와주는 비법이다. 디자인 패턴은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 베스트 프렉티스를 정리한 것이다. 디자인 패턴은 당연히 객체 지향 특성과 설계 원칙을 기반으로 구현되어 있다. 스프링은 객체 지향의 특성과 설계 원칙을 극한까지 적용한 프레임워크이다. 따라서 스프링을 공부하다보면 자연스럽게 디자인 패턴을 만날 것이다. 디자인 패턴이란 객체 지향 프로그래밍으로 비즈니스 요구사항을 처리하며 마주친 문제들을 객체 지향의..
내용을 쉽게 찾아볼 수 있도록 카테고리 분리 목적으로 작성된 포스팅입니다. 내용은 블로그 링크로 대체합니다. SOLID 💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다. 이번 장은 SOILD법칙에 대해 설명한다. SOILD도 이 hyunsb.tistory.com
💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다. 이번 장은 SOILD법칙에 대해 설명한다. SOILD도 이미 귀에 딱지가 생기도록 듣고 읽었으니, 이해에 있어 조금 아쉬운 부분과 개념에 대해 정리하려 한다. ☁️ SOLID 객체 지향의 4대 특성, ‘캡!상추다’를 학습했다면 객체 지향적인 프로그래밍을 할 준비가 된 것이다. 하지만 객체 지향 프로그래밍을 제대로 하기 위해서는 규칙이 존재한다. 아래의 규칙을 지키며 객체 지향 프로그램을 설계하면 응집도는 높이고, 결합도는 낮춰 변경에 유연하고 확장에 용이한 프로그램을 설계할 수 있을 것이다. SRP(Single Responsibility Principle): 단일 책임..
💡 해당 글은 『스프링 입문을 위한 자바 객체지향의 원리와 이해』 도서를 학습하며 도서의 내용을 참고하여 본인의 언어로 표현한 글입니다. 해당 장은 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 설명한다. 예를 들어 this, abstract 와 같은 키워드이다. 이미 충분히 알고 있는 내용이기에 간단하게 정리만 하고 넘어가려 한다. ☁️ abstract - 추상 메서드와 추상 클래스 abstract 키워드를 사용하여 추상 클래스와 메서드를 만들수 있다. public abstract class AbstractClass { public abstract void method(); } abstract 로 선언된 추상 메서드를 하나라도 가지고 있는 클래스는 추상 클래스여야만 한다. 추상 클래스를 확..