디자인 패턴 정리 마지막 포스팅이고 이번에는
- decorator
- factory method
- abstract factory
- mediator
- composite
이렇게 다섯개의 패턴을 설명으로 마치도록 하겠다.
decorator
기본적으로 동작하는 메서드가 있고 추가적으로 하나씩 추가해가면서 동작을 하게 되는 작업을 할때 사용되는 패턴이다.
예를들어서 전투기 슈팅게임을 예로들면 기본 공격이 있고 아이템을 먹을때마다 좀더 미사일이 많이 나가거나 하는 것과 비슷하다.
추가로 먹는 아이템들을 하나하나 클래스로 만들고 부모 클래스인 기본공격을 모두 상속 받는다.
그리고 아이템을 먹게되면 부모의 기본공격 + 자식에서 만들어진 아이템의 추가공격 이렇게 합쳐져서 미사일이 나간다고 생각을 하면된다.
factory method
팩토리 메서드 패턴은 객체 생성을 대신 수행하는 공장이라고 생각하면 이해가 빠를것이다.
생성할 클래스를 미리 알지 못해도 팩토리 클래스가 객체 생성을 담당하거나 확장 용이성, 동일 형태로 프로그래밍 등 다양한 장점이 있다.
개발자는 모든 코드를 다 알 필요 없이 사용할, 사용될 메서드를 호출하면 팩토리메서드는 적절한 클래스를 찾고 그 안에서 객체를 생성해주고 준비가 된다.
abstract factory
추상팩토리는 바로 위 예제의 팩토리 메서드를 좀더 추상화 한다고 생각을 하면된다.
예를 들어서 모드에 따라 달라지는 버튼들을 같은 팩토리가 아니라 라이트모드일때 사용될 팩토리를 만들고 다크모드는 다크모드일때 사용될 팩토리를 하나 만들어서 각각 모드마다 동작할 팩토리를 지정해주는것이다.
mediator
뜻은 중재자, 조정자 이라는 뜻이다.
단어만 보더라도 어떤 동작이 될지 예상이 될것 같다.
부동산 중개사, 중고 판매 사이트 등 처럼 메인 동작을 하기 위해서 중재하고 통제하고 관리를 하는 역할이다.
프로그래밍에서는 수많은 동작들이 각각 방식으로 연결되어 상호작용을 한다.
근데 만약 중재자 없이 계속해서 만든다면 새로운 코드가 생성될때마다 모든 연결되어있는 페이지를 수정해야하고, 더욱 복잡해지고 어려워진다.
이럴때 중재 역할을 둬서 통신의 빈도도 낮추면서 관리하기 용이해지는 패턴이다.
composite
컴퓨터의 폴더 시스템을 생각하면 쉽다.
폴더 안에는 파일과 폴더를 만들고 넣을수 있고, 그리고 그 파일들이나 폴더들은 열어질수도 있고 닫아지거나 수정되거나 삭제되거나 등 동작하는 방식은 동일하다.
그리고 폴더는 그 안에 또 재귀 형식으로 같은작업을 수행할수 있다.
즉, 이 패턴은 포함하는것들과 포함 되는 것들이 같은 방식으로 다뤄질수 이있을 때 그리고 재귀적인 구조를 만들기 위해 사용이 된다.
'IT > Knowledge' 카테고리의 다른 글
가비지 컬렉터란? (58) | 2022.03.15 |
---|---|
서버 vs 클라우드 (50) | 2022.03.14 |
객체지향 디자인 패턴 심화 정리 part.2 (42) | 2022.03.12 |
객체지향 디자인 패턴 심화 정리 part.1 (34) | 2022.03.11 |
React Native VS Flutter ? (53) | 2022.03.10 |
댓글