목적
Dart에 디자인 패턴 적용
내용
퍼싸드 패턴
하나의 행위를 하는데 필요한 여러 동작들을 스위치 하나로 작동하게 하는것
- 라면을 사고 라면을 끓이고 라면을 담는 동작을 버튼 하나로 동작하게 하는것
템플릿 메소드 패턴
전반적인 과정에 공통적인 절차가 있을때 코드를 효율적으로 짜기 위해 사용되는 패턴
- 약과를 만드는 공장이 있다.
- 반죽을하는과정, 굽는과정, 시럽을바르는 과정이 있다.
- 이 과정을 각각 다르게 하여 약과를 만들면 다른 컨셉의 약과가 만들어진다.
- 카카오 맵과, 네이버 맵을 사용하려고 한다.
- 둘다 내위치를 찾고 목적지를 찾고 경로를 탐색하는 행위는 똑같다
- 하지만 둘의 구현은 완전히 다르게 되어있다.
- 맵뷰라는 추상클래스에 추상메소드를 만들고 맵뷰 클래스를 상속받아 함수를 오버라이딩하여 구현
데코레이터 패턴
특정 클래스에 객체들이 할 수 있는 일을 여러가지 두고 각 객체마다 사용자가 원하는대로 골라 시키거나 기능들을 필요에 따라 장착할수 있도록 할때
- 전투기게임에서
- 전투기가 아이템을 먹으면 전투기의 공격 모션이나 이펙트가 바뀐다.
팩토리 메서드 패턴
특정 클래스에서 사용하는 기능이 많고 복잡할때 사용하는 패턴으로 기능의 세부적인 내용을 알 필요 없이 사용할 객체의 조건들만 넘겨주면 팩토리 패턴이 적절한 객체들을 생성해서 넘겨준다.
추상 팩토리 메서드 패턴
팩토리 메서드 패턴을 사용할때 2개 이상의 팩토리를 만들고 싶을때 사용
- 밝은모드,다크모드의 화면의ui는 공유되지 않지만 같은 팩토리를 사용함.
메디에이터 패턴
N 대 N 관계에 사용
- 어떠한 기능이 변경되었을때 딸려진 클래스들에게 직접 알려주는것이 아니라
- 중재자를 두고 중재자가 리스트를 가지고 클래스들에게 변경 내용을 직접 알려주는것
컴포지트 패턴
포함되거나 포함하는것들이 같은 방식으로 동작할때
- 컴퓨터 파일, 폴더에서 폴더안에 폴더가, 파일이 들어갈수 있다.
- 파일과 폴더 둘다 이름바꾸기 기능이 가능하다.