소웨공 7장_최종

조선영·2023년 6월 8일
0

디자인 패턴

행위 패턴 behavioral pattern

반복적으로 사용되는 객체의 상호작용을 패턴화한 것
객체 == 속성 + 행위를 가짐

1) strategy 패턴

자주 바뀌는 것이 기능이라면?
메서드를 클래스로 바꾸고 <<interface>> 타입의 상속 구조를 만든다.

strategy 패턴은 기능이 자주 바뀌기 때문에 오른쪽에 별도로 구성해둔다.

2) state 패턴

자주 바뀌는 것이 상태라면?
상태를 클래스로 바꾸로 <<interface>> 타입의 상속 구조를 만든다.

조건문이 있는 클래스를 수정해야 한다.
-> OCP (개방 폐쇄 원칙) 위반

자주 바뀌는 것이 상태이므로 조건문으로 처리하던 상태를 클래스로 바꾸고 상속 구조형태로 만들어 하위 클래스에서 상태를 추가, 삭제할 수 있도록 한다.

조건문은 상태가 바뀔 때마다 전체를 수정해야하는 유지보수의 어려움을 초래한다.
이를 interface 타입의 상속 구조로 만들어 클래스에 미치는 영향을 최소화한다

구조 패턴 structural pattern

 클래스, 객체의 구성(합성)으로 더 큰 구조를 만들어야할 때 유용

1) decorator 패턴

기본 클래스를 조합해서 더 많으느 클래스를 만들어야 한다면
많은 클래스를 조용히 처리한다.

객체를 실행하는 도중 동적으로 확장한다는 장점이 있다.
decorator 패턴은 객체의 동적 결합을 위해 구성(합성)을 사용해 확장한다.

2) adapter 패턴

구매한 컴포넌트가 맞지 않아 바로 사용할 수 없다면?
adapter를 만들어 사용
  • 클래스 adapter 패턴 : 상속을 이용한 어댑터 패턴
  • 인스턴스 adapter 패턴 : 위임을 이용한 어댑터 패턴

생성 패턴 creational pattern

객체의 생성과 참조 과정을 추상화해
특정 객체의 생성 과정을 분리.
언제 변경하더라도 전체 시스템에 미치는 영향을 최소화해준다.

1) factory method 패턴

객체 생성을 직접 하지 않고 누군가에게 맡기고 싶다면?
factory method 패턴 사용
  • 1단계 : 객체 생성을 담당하는 factory class를 만들어 그곳에서 객체 생성
  • 2단계 : 객체를 생성할 수 있는 메서드를 만들어 그 메서드가 factory class 역할을 하도록 한다. 그리고 factory class를 삭제한다.
    -> 객체를 만든다. -> (factory 역할을) 대신하도록 설정한다. -> 기존 클래스 (factory)를 삭제한다.

singleton 패턴

객체를 오직 1개만 만들어야 한다면?
singleton 패턴 이용

일반적으로 하나의 클래스에는 여러 개의 객체를 생성
BUT, 의도적으로 단 하나의 객체만 생성하도록 하는 경우 존재

※ static으로 사용하지 않는 이유?
-> static은 외부 객체가 생성이 불가능하기 때문
-> 정적코드가 되기 때문에 나중에 바꿀 수 없음. 하드웨어에 의존적임

singleton 패턴을 이용한 객체는 언제나 서로 같다
객체를 하나만 생성해서 그런건가

1) singleton 패턴에서는 private로 선언한다.
외부에서 사용할 수 없도록 막는다.
이 때문에 외부 혀용은 getInstance()를 만들어 사용한다.

2) 객체는 static으로 선언한다.
static은 최초 한 번만 메모리를 할당해 사용한다.
(메모리 사용을 줄인다.)


정의, 내용 더 찾아보기

profile
UX 기획도 하고 서비스 기획도 하고 PM도 하고 프론트도 하고 PL도 하는 중

0개의 댓글