분류 전체보기

📌 추상 팩토리 패턴(Abstract Factory Pattern) 이란? 연관성이 있는 객체 군이 여러 개 있을 경우 이들을 묶어 추상화하고, 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화하는 생성 패턴이다. 추상 팩토리 패턴은 상세화된 서브 클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 클라이언트에서 특정 객체를 사용할 때 팩토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다. 예를 들어 모니터, 마우스, 키보드를 묶은 전자 제품군이 있고, 이들 안에서 또 삼성, 애플, 로지텍 등 집합이 브랜드 명으로 나뉠 때 복잡하게 묶이는 제품군들을 관리와 확장하기 용이하게 패턴화 한..
📌 팩토리 메서드 패턴 (Factory Method Pattern) 이란? 팩토리 메서드 패턴은 객체 생성을 캡슐화하고 서브 클래스에서 어떤 클래스의 인스턴스를 만들지 결정하는 디자인 패턴 중 하나이다. 이 패턴을 사용하면 클라이언트 코드가 구체적인 클래스에 의존하지 않고도 객체를 생성할 수 있으며, 새로운 클래스를 추가하거나 기존 클래스를 변경할 때에도 클라이언트 코드를 수정하지 않아도 된다. 클라이언트에서 직접 생성자를 통해 구체적인 객체를 생성하는 것이 아닌, 구체적인 객체들을 도맡아 생성하는 팩토리 클래스를 만들고, 이를 상속하는 구체 팩토리 클래스의 메서드에서 여러 가지 구체적인 객체 생성을 각각 책임지는 것이다. 객체 생성에 필요한 과정을 템플릿화시키고 객체 생성에 관한 전처리 혹은 후처리를 ..
📌 빌더 패턴(Builder Pattern) 이란? 빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다. 많은 선택적인 멤버 변수나 지속성 없는 상태 값들에 대해 처리해야 하는 문제들을 해결한다. 팩토리 패턴이나 추상 팩토리 패턴에서 생성해야 하는 클래스에 대한 속성 값이 많을 때는 아래와 같은 이슈가 있다. 클라이언트 프로그램은 팩토리 클래스로 많은 파라미터를 넘겨줄 때 타입, 순서 등에 대한 관리가 어려워 에러가 발생할 확률이 높아진다. 경우에 따라 필요 없는 파라미터들에 대해 팩토리 클래스에 null 값을 넘겨주어야 한다. 생성해야 하는 서브클래스가 무거워지고 복잡..
📌 싱글턴 패턴(Singleton Pattern) 이란? 싱글턴 패턴이란 단 하나의 유일한 객체를 만들기 위한 디자인 패턴이다. 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 생성하는 것이 아닌 기존의 인스턴스를 재활용하는 기법을 말한다. 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등의 경우 인스턴스를 여러 개 만들게 되면 자원을 낭비하게 되거나 버그를 발생시킬 수 있으므로 오직 하나만 생성하고 그 인스턴스를 사용하도록 하는 데 이런 경우에 싱글턴 패턴을 활용한다. 📌 싱글턴 패턴의 구조 가장 간단한 디자인 패턴 답게 구조도 간단한다. 싱글턴으로 이용할 클래스를 외부에서 생성할 수 없게 생성자를 private 접근제어자로 막고, 자기 자신의 인스턴스를 반환하는 정적 메서드를 추가하면 된다..
📌 생성 패턴 (Creational Pattern) 객체의 생성 과정을 추상화하고, 객체 생성을 유연하게 다룰 수 있는 디자인 패턴이다. 객체 생성 과정이 복잡하거나 변경 가능성이 있을 때 유용하게 사용된다. 생성 패턴은 다양한 상황에 따라 객체를 생성하고 구성하는 방법을 정의하며, 객체 생성의 유연성과 재사용성을 증가시킨다. 📌 생성 패턴의 특징 생성 패턴은 시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화한다. 그렇기에 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가린다. 📌 생성 패턴의 종류 [ 싱글턴 패턴 (Singleton Pattern) ] 한 클래스에 한 객체만 존재하도록 제한한다. [Design Pattern] 싱글턴 패턴(Singleton..
· Java
📌 스프링 auto-assembles 빈을 위한 방법들을 말하라. 스프링에서 빈을 자동으로 조립하기 위한 여러 가지 방법이 있다. [ @ComponentScan ] 지정된 패키지 이하에서 @Component 어노테이션이 붙은 클래스를 찾아 빈으로 등록한다. @SpringBootApplication @ComponentScan("com.example") public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } [ @Autowired ] 필드, 생성자, 메서드에 사용되어 해당 타입의 빈을 자동으로 주입한다. [ @Component ] 해당 클래스를..
· Java
📌 스프링 사용의 장점은 무엇인가? 스프링(Spring)은 Java 기반의 오픈 소스 프레임워크로, 다양한 기능을 제공하여 개발자들이 효과적으로 엔터프라이즈급 애플리케이션을 개발할 수 있도록 도와준다. [ 경량화 ] 스프링은 경량화된 프레임워크로서 필요한 부분만 선택적으로 사용할 수 있다. 필요한 모듈만 사용하여 애플리케이션을 더 가볍게 만들 수 있다. [ 의존성 주입 ] 스프링은 의존성 주입을 통해 객체 간의 결합도를 낮춘다. 이는 유지보수성을 높이고 테스트 용이성을 제공하며 코드 재사용성을 향상시킨다. [ 풍부한 생태계 ] 스프링은 다양한 서드파티 라이브러리 및 프로젝트와 통합이 잘 되어 있어 다양한 기능을 지원하고 개발 생산성을 향상시킨다. 스프링이란? [Spring] Spring이란? 개발자들의 ..
· Java
📌 GET과 POST요청의 차이를 말하라. [ GET ] 데이터 전송 데이터는 URL의 쿼리 매개변수로 전송된다. URL에 노출되므로 민감한 정보를 전달하기에 적합하지 않다. 캐싱 브라우저에서 GET 요청이 캐시 될 수 있다. [ POST ] 데이터 전송 데이터는 HTTP 요청의 본문(body)에 포함되어 전송된다. URL에 노출되지 않으므로 더 많은 양의 데이터와 민감한 정보를 보내기에 적합하다. 캐싱 브라우저에서 POST 요청이 캐시되지 않는다. 어떤 요청 메서드를 사용할지는 요청의 목적과 보안 상의 고려사항 등에 따라 결정되며, 일반적으로 GET은 리소스를 가져오는 데 사용되고, POST는 리소스를 생성할 때 사용된다. 📌 어떻게 도메인 간의 요청이 작동하나? 도메인 간의 요청(Cross-Origi..
개발의 밀도
'분류 전체보기' 카테고리의 글 목록 (4 Page)