디자인 패턴 : 객체지향 프로그래밍에서 공통적인 디자인 문제를 찾아내고 해결하는 가이드라인
프레임워크나 클래스 라이브러리와 달리 추상적임
왜 쓰는가? -> 공통적인 SW디자인 문제를 해결하는데 도움이 되기때문
디자인 문제와 그 해결책을 논할 떄 디자인패턴이 간결한 용어모음을 제공
*안티패턴 : 사용하면 안 되는 패턴, 비효율적이거나 효과적이지 못한 코드를 만들어냄
생성패턴 - 싱글톤 : 어떤 클래스의 인스턴스 개수가 최대 한개를 넘지 않도록 하는 패턴
싱글톤이 정적 메소드보다 나은 이유? 상속과 인터페이스, 동적 바인딩, 다수 객체로 전환가능(싱글톤패턴을 안쓰는 셈)
빌더 : 객체가 어떤 식으로 구축되는지에 대해 모르는 상황에서 단계별로 객체를 생성하는 패턴, 객체를 초기화하는 과정이 깔끔하고 이해하기 좋음
팩토리 메소드 : 새 객체를 만들어서 리턴하기 위한 용도로 만들어진 모든 메서드 추상 팩토리 패턴을 구현하기 위해 종종쓰임
추상 팩토리 : 다른 객체를 만들 수 있는 객체를 팩토리라고 부름, 팩토리의 구현과 그 팩토리를 사용하는 코드를 갈라주는 패턴, 서로다른 팩토리를 쓰거나, 팩토리 클래스가 하나밖에 없을때 추상 팩토리 안씀, 구현할 때 싱글톤 패턴을 주로 씀
행위패턴 - 반복자 : 어떤 자료두조에 들어있는 모든 원소를 종주할 수 있으며, 각 원소의 저장과 표현을 몰라도됨
옵저버 : 그 객체의 상태에 관심을 가지고 있는 옵저버에게 자신의 상태가 바뀌었음을 알릴 수 있음. (출판-구독 패턴) MVC구조도 옵저버 패턴의 일종
구조패턴 - 데코레이터 : 한 객체를 그 객체와 같은 인터페이스를 구현하는 다른 객체로 감싸서 객체의 형태를 바꿔주는 패턴(래퍼 패턴), 구상요소, 구상 구성요소, 데코레이터, 구상 데코레이터 4가지 유형의 클래스가 있다. 서브클래스를 만드는 대신 사용할 수 있는 패턴.
퍼사드패턴 : 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공 고수준 인터페이스를 정의하기 떄문에 서브시스템을 더 쉽게 사용할 수 있다.
*상속대신 데코레이터 패턴을 쓰는 이유?*
상속은 보통 부모클래스를 컴파일 시에 변경, 하지만 데코레이터 패턴은 실행시에 동적으로 적용 가능
이 동적인 특성으로 window 클래스 같은게 들어있는 GUI툴킷에 적용하여 원하는 형태를 마음대로 만들 수 있다.
*효율적으로 옵저버 업데이트하기*
상태가 너무 자주 바뀔 때, 옵저버들을 업데이트하느라 시간을 너무 소비함 -> 업데이트를 잠시 멈추고 모든 걸 바꾼 다음 업데이트를 켜고 옵저버에게 필요한 내용을 알림
*필자는 필기시험에서 싱글톤패턴에 대해 서술하는 문제를 보았었다. 디자인패턴 역시 출제될 경향이 없지는 않으므로 종류와 많이 쓰이는 패턴은 알고있자.
'프로그래밍 면접 이렇게 준비한다?' 카테고리의 다른 글
[필기,면접]객체지향 프로그래밍 (0) | 2019.04.10 |
---|---|
[필기,면접]운영체제_스레드 (0) | 2019.04.10 |
[필기,면접] 정렬 (0) | 2019.03.21 |
[필기,면접]재귀호출과 메모리 영역 (0) | 2019.03.17 |
[필기,면접] 배열, 문자열 인코딩 (0) | 2019.03.16 |