>  기사  >  PHP 프레임워크  >  Laravel 프레임워크의 모양 패턴에 대한 심층 분석

Laravel 프레임워크의 모양 패턴에 대한 심층 분석

不言
不言원래의
2018-07-31 15:13:382300검색

laravel프레임워크의 파사드 패턴(Facade Pattern)은 서브시스템의 인터페이스 집합에 대해 일관된 인터페이스를 제공하기 위해 서브시스템과의 외부 통신이 통합된 파사드 객체를 통해 수행되어야 한다는 것입니다. -레벨 인터페이스, 이 인터페이스를 사용하면 이 하위 시스템을 더 쉽게 사용할 수 있습니다. Appearance 모드는 객체 구조 모드인 Facade 모드라고도 합니다.

Laravel에서 일반적으로 사용하는 것RouteRedisAuth이 Facade는 모양 패턴의 특정 구현입니다. Laravel에서는 여러 모양 클래스가 설계되었으며, 추상 모양 클래스에서는 모양 클래스를 제공합니다. 그 뒤에 있는 하위 시스템에 액세스하기 위한 기본 방법입니다.

새로운 비즈니스 요구 사항의 경우 원래 모양 클래스를 수정하지 말고 새로운 특정 모양 클래스를 추가하세요. 동시에 소스 코드는 수정하여 수정되지 않습니다. 구성 파일을 만들고 모양 클래스 목적을 바꿉니다.

다음은 추상 모양 클래스를 도입하지 않은 단순한 모양 패턴의 예입니다. Laravel Facade를 소개하는 글에서 Laravel은 필요에 따라 새로운 하위 시스템을 쉽게 추가할 수 있도록 추상 모양 클래스를 제공하는 것을 볼 수 있습니다. 모양 클래스이며 모양 클래스가 해당 하위 시스템(또는 서비스)에 올바르게 프록시되도록 허용합니다.

모드 구조

외관 모드에는 다음 역할이 포함됩니다.

  • 외관 모양 역할

  • 하위 시스템 하위 시스템 역할

Laravel 프레임워크의 모양 패턴에 대한 심층 분석

코드
<?php class Client
{
    public function main()
    {
        (new Facade)->operation();
    }
}

class Facade
{
    private $systemA;
    private $systemB;
    
    public function __construct()
    {
        $this->systemA = new SystemA;
        $this->systemB = new SystemB;
    }
    
    public function operation()
    {
        $this->systemA->operationA();
        $this->systemB->operationB();
    }
}

class SystemA
{
    public function operationA()
    {
        //
    }
}

class SystemB
{
    public function operationB()
    {
        //
    }
}

패턴 분석

"단일 책임 원칙"에 따르면 소프트웨어에서 시스템을 여러 하위 시스템으로 나누는 것은 전체 시스템의 복잡성을 줄이는 데 도움이 됩니다. 일반적인 설계 목표는 하위 시스템 간의 통신과 상호 의존성을 최소화하는 것입니다. 서브시스템에 액세스하기 위한 간단한 단일 진입점을 제공하는 Facade 객체를 도입합니다. -외형 모드는 "데메테르의 법칙"을 구현한 것이기도 합니다. 새로운 외관 클래스를 도입함으로써 원래 시스템의 복잡성을 줄일 수 있고 클라이언트 클래스와 하위 시스템 클래스 간의 결합을 줄일 수 있습니다. - Appearance 패턴은 서브시스템 외부와 내부 간의 통신이 통일된 Appearance 객체를 통해 이루어지도록 요구하며, Appearance 클래스는 클라이언트를 서브시스템의 내부 복잡성과 분리하므로 클라이언트는 Appearance만 처리하면 됩니다. 하위 시스템 내에서 많은 개체를 사용하여 작업합니다. - 외형 모드의 목적은 시스템의 복잡성을 줄이는 것입니다. - Appearance 모드는 클라이언트 사용 편의성을 크게 향상시켜 클라이언트가 하위 시스템의 작업 세부 사항에 신경 쓸 필요 없이 Appearance 역할을 통해 관련 기능을 호출할 수 있습니다.

단점

외형 모드의 단점

  • 고객의 서브시스템 클래스 사용을 잘 제한할 수 없습니다. 서브시스템 클래스에 대한 고객의 액세스에 너무 많은 제한을 가하면 가변성과 유연성이 줄어듭니다.

  • 추상 모양 클래스를 도입하지 않고 새 하위 시스템을 추가하려면 모양 클래스 또는 클라이언트의 소스 코드를 수정해야 할 수 있으며 이는 "개방-닫기 원칙"을 위반합니다.

패턴 확장

  • 시스템에는 여러 모양 클래스가 있습니다.

    모양 패턴에서는 일반적으로 모양 클래스가 하나만 필요하며 이 모양 클래스에는 인스턴스가 하나만 있습니다. 즉, 싱글톤 클래스입니다. 많은 경우 시스템 리소스를 절약하기 위해 모양 클래스는 일반적으로 싱글톤 클래스로 설계됩니다. 물론 이는 전체 시스템에 하나의 모양 클래스만 있을 수 있다는 의미는 아닙니다. 시스템에서 여러 모양 클래스를 설계할 수 있습니다. 각 모양 클래스는 일부 특정 하위 시스템과 상호 작용하고 해당 비즈니스 기능을 사용자에게 제공합니다.

  • 외형 클래스를 통해 서브시스템에 새로운 동작을 추가하려고 하지 마세요.

    외형 클래스를 상속받아 서브시스템에 새로운 동작을 추가하지 마세요. 모양 패턴의 목적은 하위 시스템에 새로운 동작을 추가하는 것이 아니라 중앙 집중화되고 단순화된 통신 채널을 제공하는 것입니다. 새로운 동작을 추가하려면 원래 하위 시스템 클래스를 수정하거나 새 하위 시스템 클래스를 추가해야 합니다. 모양 클래스를 통해 구현됩니다.

  • 추상 모양 클래스 도입

    모양 모드의 가장 큰 단점은 "열기 및 닫기 원칙"을 위반한다는 것입니다. 새 하위 시스템을 추가하거나 하위 시스템을 제거할 때 모양 클래스를 수정해야 합니다. 특정 시점의 모양 클래스 이 문제를 어느 정도 해결하기 위해 클라이언트는 추상 모양 클래스를 프로그램합니다. 새로운 비즈니스 요구 사항의 경우 원래 모양 클래스는 수정되지 않지만 새로운 특정 모양 클래스는 새 하위 시스템 개체와 연결됩니다. 동시에 구성 파일은 다음 목표를 달성하기 위해 수정됩니다. 소스 코드를 수정하지 않고 Appearance 클래스 목적으로 대체합니다.

요약

  • 외형 패턴에서는 하위 시스템의 인터페이스 집합에 대해 일관된 인터페이스를 제공하기 위해 통합된 모양 개체를 통해 하위 시스템과의 외부 통신이 수행되어야 합니다. 모양 패턴은 상위 수준 인터페이스를 정의합니다. , 이 인터페이스를 사용하면 이 하위 시스템을 더 쉽게 사용할 수 있습니다. Appearance 모드는 객체 구조 모드인 Facade 모드라고도 합니다.

  • 출연 모드에는 두 가지 역할이 있습니다. 출연 역할은 클라이언트에서 직접 호출되는 역할입니다. 출연 역할에서는 관련(하나 이상의) 하위 시스템의 기능과 책임을 알 수 있으며, 클라이언트에서 보낸 모든 기능을 처리합니다. 들어오는 요청은 해당 하위 시스템에 위임되고 처리를 위해 해당 하위 시스템 개체에 전달됩니다. 소프트웨어 시스템에는 동시에 하나 이상의 하위 시스템 역할이 있을 수 있으며 각 하위 시스템은 그렇지 않을 수도 있습니다. 별도의 클래스이지만 하위 시스템의 기능을 구현하는 클래스입니다.

  • 외형 패턴에서는 서브시스템 외부와 내부 간의 통신이 통일된 외관 객체를 통해 수행되어야 합니다. 외관 클래스는 클라이언트를 서브시스템의 내부 복잡성과 분리하므로 클라이언트가 처리만 하면 됩니다. 모양 개체를 사용하면 하위 시스템 내부의 많은 개체를 처리할 필요가 없습니다.

  • 외형 모드의 주요 장점은 하위 시스템 구성 요소를 고객으로부터 보호하고 고객이 처리하는 개체 수를 줄이며 하위 시스템을 더 쉽게 사용할 수 있도록 한다는 것입니다. 하위 시스템과 고객 간의 느슨한 결합 관계를 달성하고 작업 시간을 줄입니다. 대규모 비용 소프트웨어 시스템의 컴파일 의존성은 서로 다른 플랫폼 사이의 시스템 이식 프로세스를 단순화합니다. 단점은 고객의 하위 시스템 클래스 사용을 잘 제한할 수 없으며 추상적인 외관을 도입하지 않고도 새 하위 시스템을 추가할 수 있다는 것입니다. "개방-폐쇄 원칙"을 위반하는 모양 클래스 또는 클라이언트의 소스 코드를 수정해야 할 수도 있습니다.

  • 외관 패턴에 적용 가능한 상황은 다음과 같습니다. 복잡한 하위 시스템에 간단한 인터페이스를 제공하는 경우 계층 구조에서 클라이언트 프로그램과 여러 하위 시스템 간에 큰 종속성이 있으므로 각 계층의 기능을 정의해야 합니다. 시스템 출입구는 층간 직접적인 접촉을 방지합니다.

위 내용은 이 기사의 전체 내용입니다. 자세한 내용은 Laravel Framework Getting Started Tutorial을 참조하세요.

추천 관련 글 :

laravel5.2 기반 미들웨어 소스 코드 파싱

Laravel 로컬 환경 구축 : Homestead 개발 환경 배포

추천 관련 강좌 :

2017년 최신 5개 Laravel 동영상 튜토리얼 추천

위 내용은 Laravel 프레임워크의 모양 패턴에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.