아래 대분류들에는 모두 이해하기 쉽다고 생각한 글들의 링크를 걸어두었으므로 링크도 들어가서 보는 것이 좋음.
원론적인 부분까지 이해하고 싶다면 위키피디아도 같이 본다면 좋다고 생각함.
디자인 패턴은 일종의 설계 기법이자 설계 방법이며, 아이디어다.
꼭 디자인 패턴을 적용해야 하는 것은 아니지만, ‘재사용, 호환, 유지 보수’시에 발생하는 문제 해결을 예방하기 위해 만들어 둔 것.
SW 재사용성, 호환성, 유지 보수성을 보장.
SOLID (객체지향 설계 원칙)
객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다.
Ex) 게임 내내 존재할 플레이어 캐릭터를 오직 하나만 만들어질 수 있도록 보장함.(싱글톤 패턴)
예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다.
Ex) 2개의 서로 호환되지 않는 인터페이스 사이에 새로운 클래스를 만들어서 연결되도록 함.(어댑터 패턴)
한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.
Ex) 유닛 인터페이스가 있고, 전투기, 헬리콥터 클래스가 있고, 미사일, 총, 레이저 클래스가 있어서 쉽게 바꿔 낄 수 있도록 한다.(스트래티지 패턴)