🔍 추상 팩토리 패턴지난 글에서는 팩토리 메서드 패턴에 대해 알아봤다.추상 팩토리 패턴은 팩토리 메서드 패턴과 유사해보일 수 있으나, 추상 팩토리 패턴의 경우 연관된 객체들을 모아 관리한다는 것에 큰 차이가 있다. ▶️ 추상 팩토리 패턴이란?추상 팩토리 패턴은 연관된 객체들을 생성할 때 하나의 팩토리 클래스에서 생성을 한다는 특징이 있다. 예를 들어, 자동차의 부품을 생성하는 추상 팩토리 패턴을 만든다고 하자. 자동차 부품에 타이어와 엔진이 있다고 할 때, 각 부품에 대한 객체를 다른 팩토리 메서드에서 생성하는 게 아니라 동일한 팩토리 메서드에서 관리해야 한다. 타이어와 엔진은 둘 다 자동차 부품으로 연관된 객체들이기 때문이다. 🔑 예제 코드각각의 차 종류에 대해 자동차 부품 객체를 생성하는 추상..
🔍 팩토리 메서드 패턴지난 글에서는 심플 팩토리에 대해 알아봤다. 심플 팩토리는 유지보수성과 확장성에 대한 장점이 존재했지만, OCP 원칙에 위배된다는 단점이 존재했다. 이런 한계를 극복한 디자인 패턴 중 하나가 팩토리 메서드(Factory Method) 패턴이다. ▶️ 팩토리 메서드 패턴이란?팩토리 메서드 패턴은 생성 패턴 중 하나로 객체 생성을 위한 메서드를 클래스에서 직접 구현하는 게 아니라, 서브클래스에서 구현하도록 위임하는 디자인 패턴이다.즉, 팩토리 메서드를 추상화하여, 구체적인 객체 생성 로직을 서브클래스에 맡기는 패턴이다. 이때 클라이언트는 객체 생성 방식에 대해 알지 못하며, 단지 팩토리 메서드를 호출해 객체 생성을 요청한다. 각 구현클래스의 객체 생성을 서브클래스에서 하기 때문에 새..
면접 준비를 하거나 Spring으로 프로젝트를 개발하면서 추상 클래스나 인터페이스에 대한 개념을 많이 보곤 했다. 하지만 정확히 어떤 것을 의미하는지 제대로 알지 못하고 단순히 암기만 하면서 개념을 이해하려고 노력했다.김영한님 강의를 들으면서 해당 개념을 더 정확히 알고 오래 기억하고자 글을 남기게 됐다. 인터페이스를 제대로 알기 전에 추상 클래스 개념을 먼저 알아야 한다. 🔍 추상 클래스란?동물(Animal)은 자식 클래스로 강아지, 고양이, 사자 등을 가질 수 있다.이때 동물은 추상적인 개념이므로 실제로 직접 인스턴스를 생성해 사용할 일이 없다. 따라서 추상적인 개념을 가진 부모 클래스를 직접 사용하여 활용하는 것을 방지하기 위한 목적으로 추상 클래스를 사용한다.정확하게는 다음 두 가지 문제를 방지..
🔍 자바는 다중 상속을 지원하지 않는다자바는 다중 상속을 지원하지 않는다. 따라서 extend 대상은 하나만 선택할 수 있다.위 그림과 같이 만약 비행기와 자동차를 상속 받아 하늘을 나는 자동차(AirplaneCar)를 만든다고 했을 때, 다중 상속을 사용하게 되면 AirplaneCar 입장에서 move()를 호출할 때 어떤 부모의 move()를 사용해야 할지 애매한 문제가 발생하게 된다. 이 문제를 다이아몬드 문제라고 한다. 또, 다중 상속을 사용하면 클래스 계층 구조가 매우 복잡해질 수 있기 때문에 자바는 클래스의 다중 상속을 허용하지 않는다. 대신 인터페이스의 다중 구현을 허용하여 이런 문제를 피할 수 있다.