프런트 엔드 디자인 패턴에 대한 기본 참고 사항

        프런트엔드 디자인 패턴은 프런트엔드 개발에 자주 사용되는 문제 해결 패턴이나 아이디어를 말합니다. 이는 코드를 더 잘 구성하고 관리하는 데 도움이 되는 입증된 모범 사례입니다.

1. 싱글톤 패턴

싱글톤 패턴은 클래스에 인스턴스가 하나만 있고 전역 액세스 지점을 제공하는         생성 패턴입니다 . 프런트엔드 개발에서 싱글톤 패턴은 전역 상태 및 공유 리소스를 관리하는 데 자주 사용됩니다 . 예를 들어, 싱글톤 패턴을 사용하여 애플리케이션의 상태 정보를 저장하고 관리하는 전역 상태 관리자를 구현할 수 있습니다.

        싱글톤 패턴 구현의 핵심은 생성자를 비공개로 설정하고 인스턴스의 외부 직접 생성을 금지하는 것입니다 . 동시에 싱글톤 인스턴스를 얻기 위한 정적 메소드를 제공해야 하는데, 이 메소드는 인스턴스가 이미 존재하는지 확인하고 존재하지 않으면 새 인스턴스를 생성합니다.

        싱글톤 모드에서 클래스의 최대 인스턴스 수는 1입니다. 싱글톤 패턴은 전체 시스템에서 특정 작업을 수행하기 위해 객체가 필요할 때 유용합니다. 다른 시나리오에서는 싱글톤 모드를 사용하지 않는 것이 좋습니다. 싱글톤 모드는 전역 상태를 도입하고 정상적인 시스템에서는 너무 많은 전역 상태를 도입하지 않아야 하기 때문입니다.

역할: 클래스에 인스턴스가 하나만 있는지 확인하고 전역 액세스 지점을 제공합니다.

구현 방법: 전용 변수를 사용하여 고유한 인스턴스를 저장하고, 공용 정적 메서드를 통해 인스턴스를 얻습니다.

예: 프런트 엔드 개발에서는 싱글톤 패턴을 사용하여 애플리케이션 상태를 관리하는 전역 상태 관리자를 만들 수 있습니다.

2. 팩토리 패턴

        팩토리 패턴은 객체 생성을 위한 인터페이스를 정의하지만 하위 클래스가 인스턴스화할 클래스를 결정할 수 있도록 하는 생성 패턴입니다. 팩토리 메소드를 통해 객체를 생성하고 코드에서 new 연산자를 직접 사용하지 않도록 하여 코드를 더욱 유연하고 유지 관리하기 쉽게 만듭니다. 프런트엔드 개발에서는 UI 구성요소와 Ajax 요청 객체를 생성하는 데 팩토리 패턴이 자주 사용됩니다 .

        팩토리 패턴은 단순 팩토리 패턴, 팩토리 메소드 패턴, 추상 팩토리 패턴으로 나눌 수 있습니다. 단순 팩토리 패턴은 팩토리 클래스가 모든 제품 인스턴스를 생성하는 가장 기본적인 팩토리 패턴입니다. 팩토리 메소드 패턴은 간단한 팩토리 패턴을 기반으로 하며, 팩토리 클래스를 인터페이스로 추상화하고 하위 클래스가 특정 팩토리 메소드를 구현할 수 있도록 합니다. 추상 팩토리 패턴은 팩토리 메소드 패턴을 기반으로 하며, 팩토리 인터페이스를 추상 팩토리 인터페이스로 추상화하여 서브클래스가 특정 제품군 팩토리를 구현할 수 있도록 합니다.

기능: 팩토리 클래스를 통해 객체를 생성하고 객체 생성 논리를 숨깁니다.

구현 방법: 다양한 조건에 따라 다양한 개체를 생성하고 통합된 인터페이스를 반환하는 팩토리 클래스를 정의합니다.

예: 프런트 엔드 개발에서는 팩토리 패턴을 사용하여 다양한 유형의 구성 요소를 만들고 다양한 매개 변수를 기반으로 해당 구성 요소 인스턴스를 반환할 수 있습니다.

3. 관찰자 패턴

        관찰자 패턴은 일대다 종속 관계를 정의하는 행위 패턴으로, 여러 관찰자 객체가 특정 주체 객체를 동시에 모니터링할 수 있도록 하며, 객체의 상태가 변경되면 이에 의존하는 모든 객체에게 알림을 보냅니다. 자동으로 업데이트됩니다 . 주체 개체가 변경되면 모든 관찰자 개체 에 알리고 상태를 업데이트할 수 있습니다.

        프런트엔드 개발에서는 이벤트 시스템을 구현하기 위해 관찰자 패턴이 자주 사용됩니다. 예를 들어, 이벤트 주제 객체를 정의하고 여러 이벤트 리스너 객체가 주제 객체를 수신하도록 할 수 있습니다. 토픽 객체가 이벤트를 트리거하면 모든 리스너 객체에 해당 처리 기능을 실행하라고 알립니다.

기능: 일대다 종속 관계를 정의합니다. 개체의 상태가 변경되면 해당 개체에 종속된 모든 개체에 알림이 전달되고 자동으로 업데이트됩니다.

구현 방법: 주체(Subject)와 다중 관찰자(Observer)를 정의하고, 주체는 관찰자 목록을 유지하며, 주체의 상태가 변경되면 관찰자에게 업데이트하도록 알림을 보냅니다.

예: 프론트 엔드 개발에서 관찰자 패턴을 사용하여 이벤트를 모니터링하고 응답할 수 있으며, 이벤트가 트리거되면 등록된 모든 관찰자에게 해당 처리에 대한 알림이 전달됩니다.

4. 프로토타입 패턴

프로토타입 패턴은 구체적인 클래스에 의존하지 않고 기존 객체를 복사하여 새로운 객체를 생성하는         생성적 디자인 패턴입니다 . 프로토타입 패턴은 런타임에 객체를 동적으로 생성하는 데 도움이 되며 기존 인스턴스화 방법을 사용하지 않고 객체 생성 효율성을 향상시킵니다.

기능: 기존 개체를 복사하여 새 개체를 생성하고 유사한 개체를 많이 생성하는 오버헤드를 피합니다.

구현 방법: 객체를 생성하기 위해 생성자를 사용하지 않고 기존 객체를 복제하여 새 객체 인스턴스를 생성합니다.

예: 프런트엔드 개발에서는 프로토타입 패턴을 사용하여 복잡한 객체나 구성 요소를 생성하여 성능과 유지 관리성을 향상시킬 수 있습니다.

5. 데코레이터 패턴

데코레이터 패턴은 객체의 구조를 수정하지 않고도 객체에 추가 기능을 동적으로 추가할 수 있는         구조적 패턴입니다 . 상속을 통하지 않고 래핑하여 개체의 기능을 확장합니다. 이 패턴을 사용하면 코드를 더욱 유연하고 확장 가능하게 만들 수 있습니다. 프런트 엔드 개발에서는 데코레이터 패턴을 사용하여 로깅, 캐싱, 성능 모니터링 및 기타 기능을 추가하는 경우가 많습니다.

        데코레이터 패턴은 클래스 데코레이터와 메소드 데코레이터로 나눌 수 있습니다. 클래스 데코레이터는 정적 및 인스턴스 메서드, 속성 및 메타데이터를 추가할 수 있는 클래스를 장식하는 데 사용됩니다. 메소드 데코레이터는 매개변수, 반환 값, 메타데이터 등을 추가할 수 있는 메소드를 장식하는 데 사용됩니다.

기능: 원래 구조를 변경하지 않고 개체에 추가 기능을 동적으로 추가합니다.

구현 방법: 래퍼를 사용하여 원본 개체를 래핑하고 새 기능을 추가합니다.

예: 프런트 엔드 개발에서는 데코레이터 패턴을 사용하여 버튼 구성 요소에 클릭 통계를 추가하는 등 기존 구성 요소의 기능을 확장하거나 수정할 수 있습니다.

6. 어댑터 패턴

                어댑터 패턴은 클라이언트의 요구 사항을 충족하기 위해 호환되지 않는 개체를 호환 가능한 개체로 패키징할 수 있도록 하는 구조적 패턴입니다 . ( 원래 호환되지 않는 클래스가 함께 작동할 수 있도록 클래스의 인터페이스를 클라이언트가 예상하는 다른 인터페이스로 변환합니다. ) 프런트 엔드 개발에서 어댑터 패턴은 종종 다른 API 인터페이스 및 타사 라이브러리와 호환되는 데 사용됩니다.

어댑터 패턴은 클래스 어댑터 패턴과 객체 어댑터 패턴으로 나눌 수 있습니다. 클래스 어댑터 패턴은 상속을 사용하여 어댑터 개체와 적응된 개체의 인터페이스를 통합할 수 있는 어댑터를 구현합니다. 객체 어댑터 패턴은 컴포지션을 사용하여 어댑터를 구현합니다. 이를 통해 어댑터 객체에 적응된 객체에 대한 참조를 저장하고 해당 인터페이스를 변환할 수 있습니다.

기능: 원래 호환되지 않는 클래스가 함께 작동할 수 있도록 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환합니다.

구현 방법: 클라이언트가 기대하는 인터페이스를 구현하기 위해 어댑터 클래스를 생성하고, 내부적으로 원래 클래스의 메서드를 사용하여 적응을 구현합니다.

예: 프런트엔드 개발에서는 어댑터 패턴을 사용하여 더 나은 통합을 위해 다양한 프레임워크나 라이브러리 간의 차이점을 조정할 수 있습니다.

7. 전략 패턴

전략 패턴 은 일련의 알고리즘을 정의하고 각 알고리즘을 캡슐화하여 상호 교환이 가능하고 런타임 시 문제를 해결하기 위해 필요에 따라 해당 전략을 선택할 수 있도록 하는 동작         패턴입니다 . 프런트 엔드 개발에서 전략 패턴은 양식 유효성 검사, 정렬 및 필터링과 같은 문제를 처리하는 데 자주 사용됩니다.

        전략 패턴은 전략 클래스, 컨텍스트 클래스, 클라이언트 클래스의 세 부분으로 구성됩니다. 전략 클래스는 특정 알고리즘을 캡슐화하고, 컨텍스트 클래스는 전략 클래스의 알고리즘 호출을 담당하며, 클라이언트 클래스는 컨텍스트 클래스 생성 및 특정 전략 클래스 설정을 담당합니다.

기능: 일련의 알고리즘을 정의하고 이를 서로 교체할 수 있도록 독립적인 전략 클래스로 캡슐화합니다.

구현 방법: 각 전략 알고리즘을 독립된 클래스에 캡슐화하고 컨텍스트 클래스를 통해 다양한 전략을 호출합니다.

예: 프런트엔드 개발에서 전략 패턴을 사용하여 다양한 사용자 역할에 따라 다양한 권한 확인 전략을 선택할 수 있습니다.

8. MVC 패턴 (모델-뷰-컨트롤러 패턴)

        MVC 패턴은 애플리케이션을 모델, 뷰, 컨트롤러의 세 부분으로 나눕니다. 모델은 데이터 처리를 담당하고, 뷰는 데이터 렌더링을 담당하며, 컨트롤러는 모델과 뷰 간의 상호 작용을 조정합니다.

기능: 애플리케이션을 모델, 뷰 및 컨트롤러의 세 가지 구성 요소로 나눕니다.

구현 방법: 모델은 데이터 및 비즈니스 로직 처리를 담당하고, 뷰는 데이터 표시를 담당하며, 컨트롤러는 사용자 입력 및 제어 프로세스 처리를 담당합니다.

예: 프런트 엔드 개발에서 MVC 패턴을 사용하면 인터페이스 로직과 비즈니스 로직을 분리하여 코드의 가독성과 유지 관리성을 향상시킬 수 있습니다.

9. MVVM 패턴(Model-View-ViewModel 패턴)

        MVVM 패턴은 컨트롤러를 뷰 모델로 변경하는 MVC 패턴의 변형입니다. 뷰 모델은 사용자 인터페이스와 비즈니스 로직 간의 상호 작용을 처리합니다.

역할: MVVM 패턴에서 View는 데이터 표시 및 사용자 작업 수신을 담당하고, Model은 애플리케이션의 데이터 및 비즈니스 로직을 나타내며, ViewModel은 View와 모델 간의 상호 작용을 처리합니다.

구현 방법: 데이터 바인딩 기술을 사용하여 뷰와 모델을 바인딩함으로써 데이터 변경 사항이 자동으로 뷰에 반영되고 사용자 작업이 해당 모델 작업에 매핑됩니다.

예: 프런트 엔드 개발에서 MVVM 패턴을 사용하여 데이터 기반 인터페이스 개발을 구현하고 복잡한 DOM 작업을 단순화할 수 있습니다.

(사진은 인터넷에서 퍼온건데 절대 샤오바이가 직접 만든게 아닙니다!~)

Guess you like

Origin blog.csdn.net/Vivien_CC/article/details/132825714