본문 바로가기
728x90

BEAN3

Chapter 03. Spring DI(Dependency Injection) 의존성 주입을 통해 객체를 생성할 경우 의존성을 생성해 주입할 코드가 필요하다. 만약 이 로직을 별도의 클래스로 분리한다면 이 클래스를 서로 다른 두 객체를 조립하는(의존 객체를 주입하는) 클래스, 즉 조립기로 볼 수 있다. 조립기의 예시는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public class Assembler { private final MemberDao memberDao; private final MemberRegisterService registerService; private final ChangePasswordService passwordService; public Assembler() {.. 2022. 4. 25.
IoC(Inversion of Control) 맛보기 다음과 같은 코드를 보자. 1 2 3 4 class OwnerController { private OwnerRepository repository = new OwnerRepository(); } Colored by Color Scripter cs 이 코드는 자신이 사용할 의존성(repository)를 자신이 만들어 사용하고 있다. 하지만 다음과 코드는 자신이 사용할 의존성을 생성자를 통해 받아오고 있다. 1 2 3 4 5 6 7 8 class OwnerController { private OwnerRepository repository; public OwnerController(OwnerRepository repo) { this.repository = repo; } } Colored by Color Sc.. 2022. 4. 20.
6. 객체와 자료 구조 객체지향 패러다임에서 변수를 private으로 하는 이유는 변수에 의존하는 것을 막기 위해서이다. 그렇다면 왜 수많은 개발자들이 접근자와 수정가를 public으로 사용할까? 자료 추상화 변수를 private으로 선언하고 각 값마다 접근자와 수정자를 만든다면 이것은 진정한 캡슐화가 아니다. 변수 사이에 함수라는 계층을 넣는것 만으로는 구현이 감추어지지 않는다. 진정한 캡슐화를 위해서는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 한다. 즉, 자료를 세세하게 표기하기 보다는 추상적인 개념으로 표기해야 한다. 이런 논리에 의거해 다음 두 인터페이스를 보면 두번째 인터페이스가 더 객체지향 스럽다는 것을 알 수 있다. 1 2 3 4 5 6 7 8 9 10 // 자동차 연료 상.. 2022. 1. 17.
728x90