공부/디자인 패턴 5

[디자인패턴] 의존성 주입이란?

[디자인패턴] 의존성 주입이란? 이번 게시글에서는 의존성 주입 (Dependency Injection)이란 무엇인지 예시를 통해 설명할 겁니다. 예시가 옳지 않거나 제가 틀린 부분이 있을 시 피드백 주시면 빠르게 반영하도록 하겠습니다. 의존성 주입(Dependency Injection)이란? 의존성 주입(Dependency Injection)이란 컴포넌트 간 의존성을 낮추기 위해 인스턴스 생성을 클래스 외부로 위임하는 디자인 패턴 중 하나입니다. 자바나 코틀린 등 객체 지향 프로그래밍 언어에서 클래스 간 의존성이 존재한다는 건, 한 클래스의 변화로 인해 다른 클래스에 영향을 주는 것을 의미합니다. 의존성 주입을 사용하여 프로젝트를 구성한다면 보일러 플레이트를 줄일 수 있고, 추가로 유지보수에 여러 이점이..

[디자인패턴/Java] 원형 패턴( Prototype Pattern)

[디자인패턴] 원형 패턴( Prototype Pattern) 의도 : 원형이 되는(Prototype) 인스턴스를 사용하여 생성할 객체 종류를 명시하고 견본을 복사해 새 객체를 생성한다. 본문 원형 패턴은 제품의 생성, 복합 표현 방법에 독립적인 제품을 만들고자 할 때 사용한다. 활용성 제품의 생성, 복합, 포현 방법에 독립적인 제품을 만들고자 할 때 사용한다. 인스턴스화할 클래스를 런타임에 지정하는 경우 제품 클래스 계통과 병렬적으로 만드는 팩토리 클래스를 피하고 싶은 경우 클래스의 인스턴스들이 서로 다른 상태 조합 중 어느 하나인 경우 UML Prototype : 자신을 복제하는 데 필요한 인터페이스를 정의한다. ConcretePrototype : 자신을 복제하는 연산을 구현한다. Client : 원형..

[디자인패턴] 팩토리 매서드 (Factory Method Pattern)

팩토리 매서드 패턴 (Factory Method Pattern) 의도 : 객체 생성을 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 한다. 팩토리 메서드는 객체를 생성하고 반환하는 메서드이다. 하위 클래스에서 이를 오버라이딩하여 사용한다. 활용 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측 할 수 없을 경우 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 경우 객체 생성의 책임을 몇 개의 보조 서브클래스 가운데 하나에게 위임하고 어떤 서브클래가 가운데 하나에게 위임하고, 어떤 서브클래스가 위임자인지에 대한 정보를 국소화시키고 싶을 경우 구조 Product : 팩토리 매서드가 생성하는 객체의 인터페이스 정의 ConcretePr..

[디자인패턴] 빌더 패턴 (Builder Pattern)

빌더 패턴 (Builder Pattern) 의도 : 객체 생성 방법과 표현 방법을 정의하는 클래스를 분리하여 서로 다른 표현이라도 동일한 절차를 제공할 수 있도록 하는 패턴 활용 객체 생성 알고리즘이 조립 방법에 독립적인 경우 합성할 객체 표현이 다르더라도 생성 절차에서 표현 과정을 지원해야하는 경우 장점 제품 내부 표현 다양화 생성과 표현 코드 분리 복합 객체 생성 절차의 세밀화 구조 Builder : Product객체 일부 요소를 생성하기 위한 추상 인터페이스 정의 ConcreateBuilder: Builder에 정의된 인터페이스 구현, 제품(Product) 구현 및 제공 Director: 제품 생성 절차를 담당하며 필요에 따라 Builder 인터페이스를 요청하여 제품 생성 Product: 생성된 복..

[디자인패턴] 추상 팩토리 패턴 (Abstract Factory Pattern)

추상 팩토리 패턴(Abstract Factory Pattern) 의도 : 구체화된 서브클래스 정의 없이 서로 관련 있는 객체 군 생성을 위한 인터페이스를 제공한다. 활용 객체 생성, 구성 · 표현 방식 무관한 시스템을 독립적으로 만들 경우 여러 제품군 중 하나만을 선택해 시스템을 설정해야 하며 이를 나중에 다른 것으로 대체할 수 있어야 하는 경우 관련 객체들이 함께 사용되도록 설계되었고 이 제약이 지켜지도록 하고 싶을 경우 제품의 라이브러리를 제공하고 제품의 구현이 아닌 인터페이스만을 노출시키고 싶을 경우 장점 구체적인 클래스 분리 제품군의 쉬운 교체 제품군 일관성 증진 단점 제품 추가의 어려움 제품 추가가 될 시 팩토리를 모두 수정해주어야 함 예시 한 소비자가 삼성과 애플 두 핸드폰 판매 브랜드의 핸드..

반응형