구조 패턴이란 무엇인가?
구조 패턴(Structural Pattern)은 객체간의 상호작용을 단순화하고 유연하게 만들어주는 디자인 패턴입니다. 구조 패턴은 객체의 구조를 개선하여, 객체 간의 상호작용을 개선하고 객체의 재사용성을 높이는데 도움을 줍니다.
구조 패턴의 특징
구조 패턴의 특징은 다음과 같습니다.
- 객체 간의 관계 개선: 구조 패턴은 객체 간의 관계를 개선하여, 객체 간의 상호작용을 단순화하고 유연하게 만들어줍니다.
- 객체의 재사용성 향상: 구조 패턴은 객체의 재사용성을 높이는데 도움을 줍니다. 객체의 재사용성이 높아짐으로써, 코드의 중복을 방지하고 개발 시간을 단축할 수 있습니다.
- 객체의 기능 확장: 구조 패턴은 객체의 기능을 확장하는데 도움을 줍니다. 기존 객체의 기능을 수정하지 않고, 기능을 확장할 수 있습니다.
구조 패턴의 종류
구조 패턴에는 다양한 종류가 있습니다. 이 중에서 대표적인 구조 패턴에는 다음과 같은 것이 있습니다. 여기서는 간단히 알아보고 다음 글부터 자세히 알아보도록 하겠습니다.
어댑터 패턴(Adapter Pattern)
어댑터 패턴은 서로 다른 인터페이스를 가지는 객체들이 상호작용을 할 수 있도록, 인터페이스를 변환해주는 패턴입니다. 어댑터 패턴을 이용하면, 기존에 개발된 코드를 수정하지 않고, 새로운 코드를 추가하여, 객체 간의 상호작용을 개선할 수 있습니다.
브릿지 패턴(Bridge Pattern)
브릿지 패턴은 추상화와 구현부를 분리하여, 이들을 독립적으로 개발하고 유지보수할 수 있도록 해주는 패턴입니다. 브릿지 패턴을 이용하면, 추상화와 구현부를 독립적으로 변경할 수 있으며, 객체 간의 상호작용을 유연하게 만들어줍니다.
컴포지트 패턴(Composite Pattern)
컴포지트 패턴은 객체들을 트리 구조로 구성하여, 객체들 간의 계층 구조를 표현하는 패턴입니다. 컴포지트 패턴을 이용하면, 단일 객체와 객체의 집합을 모두 동일한 방식으로 다룰 수 있으며, 객체 간의 관계를 개선할 수 있습니다
데코레이터 패턴(Decorator Pattern)
데코레이터 패턴은 객체에 기능을 동적으로 추가하는 패턴입니다. 데코레이터 패턴을 이용하면, 객체의 기능을 동적으로 확장할 수 있으며, 객체의 상속을 통한 기능 추가보다 유연하게 기능을 추가할 수 있습니다. 데코레이터 패턴은 객체를 감싸는 래퍼(Wrapper) 클래스를 생성하여, 기존 객체에 새로운 기능을 추가하는 방식으로 구현됩니다.
퍼사드 패턴(Facade Pattern)
퍼사드 패턴은 복잡한 서브시스템을 단순화하여, 사용자에게 단순한 인터페이스를 제공하는 패턴입니다. 퍼사드 패턴을 이용하면, 서브시스템의 복잡성을 숨길 수 있으며, 사용자는 단순한 인터페이스만을 사용하여 서브시스템을 제어할 수 있습니다.
플라이웨이트 패턴(Flyweight Pattern)
플라이웨이트 패턴은 객체의 메모리 사용량을 줄이기 위해, 객체를 공유하여 사용하는 패턴입니다. 플라이웨이트 패턴을 이용하면, 객체의 메모리 사용량을 줄이면서, 객체를 재사용할 수 있습니다. 객체의 상태 정보를 외부에서 관리하여 객체를 공유할 수 있으며, 객체의 공유 여부는 객체 내부에 저장됩니다.
프록시 패턴(Proxy Pattern)
프록시 패턴은 객체의 대리인 역할을 하는 객체를 생성하여, 객체의 접근을 제어하는 패턴입니다. 프록시 패턴을 이용하면, 객체에 대한 접근을 제어하고, 객체의 생성 시간이나 메모리 사용량 등을 줄일 수 있습니다. 또한, 객체의 사용 권한을 제한하거나, 객체의 로그를 기록하는 등의 기능을 추가할 수 있습니다.
구조 패턴의 의의
위와 같이 구조 패턴은 객체 간의 상호작용을 개선하고, 객체의 재사용성을 높이는 등의 장점을 가지고 있습니다. 각 패턴마다 특징이 다르기 때문에, 상황에 맞게 적절한 패턴을 선택하여 사용하는 것이 중요합니다. 다음 글에서부터 자바스크립트에서는 구조 패턴을 어떻게 사용할 수 있는지 알아보도록 하겠습니다.
'JavaScript 디자인 패턴' 카테고리의 다른 글
[JavaScript 디자인 패턴] 브릿지 패턴이란 무엇인가? 브릿지 패턴 사용해 추상화와 구현을 분리하기 (0) | 2023.02.28 |
---|---|
[JavaScript 디자인 패턴] 어댑터 패턴이란 무엇인가? 어댑터 패턴 사용해 서로 다른 인터페이스 연결하기 (0) | 2023.02.27 |
[JavaScript 디자인 패턴] 프로토 타입 패턴 : 객체를 복사해 새로운 객체를 생성하는 패턴 (0) | 2023.02.24 |
[JavaScript 디자인 패턴] 싱글톤 패턴: 장단점과 구현 방법 알아보기 (0) | 2023.02.22 |
[JavaScript 디자인 패턴] 생성 패턴이란 무엇인가? 생성 패턴의 장단점과 종류 알아보기 (0) | 2023.02.21 |