디자인 패턴

소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 일종의 해결책을 제시하는 것이다.

즉, 이미 해결된 문제들에 대한 솔루션을 일종의 틀(패턴)로 정리해 둔 것

 

디자인 패턴을 사용하면 장점이 있다.

코드의 재사용성이 높아진다.
개발 과정에서 발생할 수 있는 문제를 예방할 수 있다.
소프트웨어의 구조가 개선되어 유지보수가 용이해진다.
개발자들 간의 소통이 원활해진다.

 

디자인 패턴은 크게 구조,생성,행위 패턴으로 나누어지는데 

생성 패턴

객체의 생성에 관련된 패턴입니다. 객체를 생성, 합성하는 방법과 객체의 표현 방법을 다룹니다.
Singleton 패턴 : 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 패턴
Factory Method 패턴 : 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 만들지에 대한 결정은 서브 클래스가 내리도록 한다.
Abstract Factory 패턴 : 인터페이스를 이용하여 서로 연관되거나 의존하는 객체들을 구체화 클래스를 지정하지 않고도 생성할 수 있는 패턴


구조 패턴

객체의 구성 방법과 관련된 패턴입니다. 클래스나 객체를 조합해 더 큰 구조를 만드는 것에 중점을 둡니다.

Adapter 패턴 : 호환되지 않는 인터페이스 때문에 함께 동작할 수 없는 클래스들을 연결하여 같이 동작할 수 있게 해주는 패턴
Composite 패턴 : 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층 구조를 만드는 패턴
Facade 패턴 : 복잡한 서브 시스템을 단순화시키는 인터페이스를 제공하는 패턴



행위 패턴

객체나 클래스 사이의 알고리즘이나 책임 분배와 관련된 패턴입니다. 객체들이 상호작용을 하는 방법과 책임을 분배하는 방법에 중점을 둡니다.

Observer 패턴 : 객체 사이의 일대다 의존 관계를 정의해 놓아, 어떤 객체의 상태가 변할 때 그 객체에 의존하는 다른 객체들에게 자동으로 알림을 보내는 패턴입니다. 주로 GUI, 이벤트 처리, 모니터링 시스템 등에서 활용됩니다.
Strategy 패턴 : 동일한 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고, 이들이 필요할 때 교체할 수 있도록 함으로써, 동일한 문제를 다른 알고리즘으로 해결할 수 있도록 하는 패턴입니다. 주로 알고리즘 변경에 따른 유연한 대처가 필요한 경우에 활용됩니다.
Template Method 패턴 : 알고리즘의 구조는 그대로 유지하되, 특정 단계에서 수행하는 내용을 서브 클래스에서 오버라이드하여 변경할 수 있게 하는 패턴입니다. 주로 상속을 통해 기능을 확장할 수 있는 구조에서 활용됩니다.
Command 패턴 : 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 하는 패턴입니다. 주로 요청의 이력을 관리하거나 요청을 처리하는 구조에서 활용됩니다.

그 외에도 다양한 행위 패턴이 존재한다

SMALL

+ Recent posts