본문 바로가기
Study/Study Alone

[나혼자공부] 6주차 복습-2

by 햄리뮤 2025. 1. 9.
반응형

오늘도 힘내자!

https://vitalflux.com/different-types-brainstorming-techniques-great-ideas/



오늘의 공부 내용

내 답변은 혼자 계속 다듬어 가면서 고치고 고치고 고치다가 정리된 답변입니다... 처음부터 절때 저렇게 정리하지 않았습니다...!

 

  1. DI와 DIP의 주요 차이점은 무엇인가요?
    • DI는 객체간의 의존성을 외부에서 주입하여 객체간의 결합도를 낮추는 개념이고 DIP는 추상화가 구체화를 의존하는 것이 아니고 구체와가 추상화에 의존해야한다는 설계 개념입니다. DIP는 설계의 원칙을 제공하는 것이고 DI는 이를 구현하는 실질적인 개념입니다.
  2. 디자인 패턴을 선택할 때 어떤 기준을 가장 우선시하시나요?
    • 해결하려는 문제가 어떤 것인지 명확해야 하고 패턴을 사용함으로써 성능문제가 발생하지 않을지 판단해야합니다.
  3. 프록시 패턴을 사용하는 상황과 이 패턴이 해결할 수 있는 문제점을 설명해주세요
    •  
  4. 싱글턴 패턴의 장단점은 무엇이며, 어떤 상황에서 사용하는 것이 적합한가요?
    • 싱글턴 패턴은 하나의 인스턴스만 존재하므로, 전역으로 그 인스턴스를 사용할 수 있고 메모리 사용을 최소화 할 수 있습니다. 싱글턴 객체에 의존하게 되어 클래스간 결합도가 높아져 유지보수성이 떨어질 수 있습니다. 설정정보나 로그 관리처럼 상태 공유가 필요한 경우나 커넥션 풀, 캐시와 같은 자원관리에 사용하는것이 적합 합니다.
  5. 팩토리 패턴을 사용할 때의 장점과 단점, 그리고 주의해야 할 점은 무엇인가요?
    • 객체를 직접 생성하는 것이 아니라, 팩토리 메서드를 통해 객체를 생성하므로 객체 생성 로직을 클라이언트 코드와 분리할 수 있다는 장점이 있습니다. 팩토리 패턴을 사용하면 클래스 생성 로직이 팩토리 안에 캡슐화되기 때문에 테스트가 어렵거나 불편할 수 있습니다. 객체 생성이 간단한 경우, 팩토리 패턴을 사용하지 않는게 더 좋을 수 있어서 과도한 사용을 피해야한다는 주의점이 있습니다.
  6. 빌더 패턴과 팩토리 패턴의 차이점은 무엇인가요?
    • 빌더 패턴은 객체 구성이 여러개가 있을때 단계별로 값을 설정할 수 있는 패턴이고 팩토리 패턴은 객체를 생성하는 로직을 숨기고 객체의 타입을 결정하는 데 집중하는 패턴입니다.
  7. 전략 패턴을 사용하여 API 타입별 분기 처리를 개선하는 방법을 설명해 주세요.
    • 하위 클래스에서 구현해야 할 인터페이스를 정의 하고 API 타입별로 다른 처리를 제공하는 구체적인 클래스를 작성합니다. 클라이언트가 API 타입에 따라 적절한 전략을 실행할 수 있도록 컨텍스트 클래스를 작성하면 됩니다.
  8. IOC(제어의 반전) 컨테이너의 작동 원리와 장점을 설명해주세요.
    • IoC 컨테이너는 객체의 생성 및 생명 주기를 관리하는데 의존성을 자동으로 주입하는 프레임 워크이고 객체간의 결합도를 낮춥니다. 객체를 등록하고 의존성을 주입한 후 생명주기를 관리합니다.
  9. IOC와 DI의 차이점은 무엇인가요?
    • IoC는 객체의 제어권을 개발자가 아닌 컨테이너가 담당하고 DI는 IoC의 구현 방식 중 하나입니다. DI는 IoC를 실현하는 구체적인 방법으로 필드, 생성자, 메서드 주입 방식이 있습니다.
  10. DIP와 IOC의 차이점은 무엇인가요?
    • DIP는 추상화가 구체화에 의존하는게 아니라 구체화가 추상화에 의존하라는 설계 원칙이고 IoC는 객체의 생명주기를 관리하는 설계 패턴 입니다.
  11. IOC와 DI를 구현하는 과정에서 순환 참조가 발생하는 원인과 해결 방법은 무엇인가?
    • 순환 참조 발생 원인은 두개 이상의 객체가 서로를 의존성으로 가지면서 객체 생성이 무한 루프에 빠지는 문제인데요. 해결 방법은 생성자 주입 대신 Setter 메서드를 사용해서 의존성을 주입하거나 의존성 객체를 필요할 때 생성하는 Lazy Initialization(지연 초기화)를 사용하는 방법으로 해결할 수 있습니다.
  12. AOP를 왜 사용하는지 설명해보세요.
    • 로깅, 트랜잭션 관리, 보안 같은 공통 기능을 한 곳에서 관리하여 코드 중복을 줄여서 유지보수성을 향상 시키기 위함입니다.
  13. PSA의 개념과 이를 통해 얻을 수 있는 이점은 무엇인가요?
    • PSA 학습 후 채워 넣겠습니다!
  14. PSA를 통해 어떻게 기술에 종속되지 않는 코드를 작성할 수 있나요?
    • PSA 학습 후 채워 넣겠습니다!
  15. 스프링에서 PSA(Portable Service Abstraction)의 역할은 무엇인가요?
    • PSA 학습 후 채워 넣겠습니다!
반응형

'Study > Study Alone' 카테고리의 다른 글

[나혼자공부] 6주차 복습-1  (0) 2025.01.08
[나혼자공부] 5주차 복습-2  (0) 2025.01.04
[나혼자공부] 5주차 복습-1  (2) 2025.01.03
[나혼자공부] 4주차 복습-2  (0) 2024.12.26
[나혼자공부] 4주차 복습-1  (2) 2024.12.25

댓글