PHP는 디자인 패턴 - 전략 패턴

PHP 전략 패턴

1. 전략 패턴은 무엇인가?

정의 : 알고리즘의 특정 세트의 동작이 특정 상황을 수용하기 위해, 예컨대 패키지 등 그들이 서로 대체 될 수 있으며,이 모델은 전략 패턴이다.

이해하기 간단한는 점이다 N이, 당신의 선택을위한 연습 결과는 기반 정책을 선택해야 얻을 수있다

2. 왜 전략 패턴을 사용합니까?

디자인 패턴이 사용되면, 우리의 코드 리던던시는 낮고, 결합의 정도는, 각각의 기능 모듈은 대응 정책을 수행한다 .

물론, 단점은 우리가 대응 전략 클래스를 만들어야하는 기능입니다,하지만 우리는 (ThinkPHP, Yii2가), 컨트롤러가 실제로 전략 디자인 패턴을 반영,보기에 해당하는 MVC 아키텍처의 포괄적 볼 수 있습니다.

3, 샘플 코드

비즈니스 현장

전기 공급 업체 사이트에서 사용자의 성별에 따라 서로 다른 상품을 표시합니다. 우리는 제품의 종류 (기능 showCategory ()) 및 광고 노출 보여주고있다 (기능 showAd을 ())

이행

먼저 우리는 인터페이스에 정의 된 메소드를 구현하는 인터페이스의 필요성을 정의해야합니다.

및 인터페이스 방법은 다른 클래스를 달성하도록 정의된다.

마지막으로, 사용자에 따라 다른 방법은 새입니다.

/ * * 
 * @Purpose : 상위 인터페이스 
 * 후 UserInterface 인터페이싱 
 * / 
인터페이스를 후 UserInterface 
{ 
    / * * 
     * @purpose : 디스플레이 
     * 혼합 @return 
     * / 
    공용  기능 showAd를 (); 

    / * * 
     * @purpose : 디스플레이 카테고리 
     * 혼합 @return 
     * / 
    공용  기능 showCatetory () 
} 

/ * * 
 * @purpose : 남자 사용자가 사용자 인터페이스를 구현 
 * 클래스 MaleUser 
 * / 
클래스 MaleUser 유단 후 UserInterface 
{ 
    / * *  
     * @purpose : 디스플레이
     혼합 @return * 
     * /
     공용  기능 showAd () 
    { 
        에코 "전자" ] 
    } 

    / * * 
     * @purpose : 디스플레이 카테고리 
     * 혼합 @return 
     * / 
    공용  기능 showCatetory () 
    { 
        에코 "디지털 컴퓨터" ; 
    } 
} 

/ * * 
 * @purpose : 여성 사용자가 사용자 인터페이스를 구현 
 * 클래스 FemaleUser 
 * / 
클래스 FemaleUser 구현 후 UserInterface 
{ 
    / * * 
     * @purpose : 디스플레이 
     * 혼합 @return 
     * / 
    공공  기능 showAd () 
    {
         에코 "화장품" ] 
    } 

    / * * 
     * @purpose : 디스플레이 카테고리 
     * 혼합 @return 
     * / 
    공용  기능 showCatetory () 
    { 
        에코 "의류 분류" ; 
    } 
} 

IF ( $ _GET [ '말레 ] ) {
     $ 사용자 = 새 새 MaleUser (); 
} 다른 {
     $ 사용자 = 새 새 FemaleUser (); 
} 
$ 사용자 -> showAd ();   // 사용자의 성별에 따라 자신의 광고 콘텐츠를 표시합니다

4. 요약

전반적으로, 개발에 우리의 디자인 원칙은 다음과 같다 :

  • 독립을 넣어 코드를 그 조합을 변경할 필요가 없습니다, 응용 프로그램은 장소의 변경을 요구할 수있다 찾기;
  • 프로그래밍을위한 인터페이스가 아닌 프로그래밍의 실현을위한;
  • 다목적 조합, 적은 상속.

:이 문서에는 캥거루 학습을 요약 재현 경우 소스 알려주십시오 https://www.cnblogs.com/chrdai/p/11184082.html을

추천

출처www.cnblogs.com/chrdai/p/11184082.html