PHP에는 이해하고 마스터해야 할 패턴이 너무 많습니다. 오랫동안 공부하면서 마스터한 패턴이 얼마나 되는지 궁금합니다. PHP에서 어댑터 모드와 전략 모드의 사용에 대해 얼마나 알고 있나요? 이 기사에서는 PHP에서 어댑터 모드와 전략 모드의 사용에 대해 설명합니다. 함께 배워보세요
관련 권장 사항: PHP의 관찰자 모드가 무엇인가요? 그것을 사용하는 방법?
어댑터:
생활에는 많은 어댑터가 있습니다. 전원 어댑터는 내부에 있는 220v 변압기입니다.
한 클래스의 인터페이스를 고객이 원하는 다른 인터페이스로 변환할 수 있으므로 원래 호환되지 않는 인터페이스가 가능합니다. - 함께 일하세요. 대중적인 이해는 서로 다른 인터페이스를 통합된 인터페이스로 적용하는 것입니다.
마찬가지로 우리는 새 파일을 만들고 클래스를 정의합니다. 우리는 그러한 클래스를 알고 있지만 이 메서드는 하나만 있습니다. 인터페이스를 외부에 노출해야 할 때 클래스를 통해 어댑터 패턴을 어떻게 구현합니까? 다음 클래스는 새로 추가된 클래스이므로 어떤 멤버 메서드라도 작성할 수 있으므로 계속해서 클래스를 작성합니다. 객체를 생성할 때 전달된 객체를 저장해야 합니다. 코드를 예로 들어 보겠습니다.
<?php interface PerfectMan { function cook(); function writePhp(); } class Wife { function cook( ) { echo '最犀利的剑,只为最强大的手所挥动<br />'; } } class Man implements PerfectMan { protected $wife; //在创建对象的时候保存传递进来的对象 function __onstruct($wife) { $this->wife = $wife; } function cook( ) { $this->wife->cook(); } function writePhp() { echo '我会写php代码<br />'; } } $li = new Wife(); $ming = new Man( ) ; $ming->writePhp(); $ming->cook();
전략 모드:
(1) 여러 클래스는 서로 다른 성능 동작으로만 구별할 수 있습니다. 런타임 시 특정 항목을 동적으로 선택하는 전략 모드
수행할 작업입니다.
(2) 다양한 상황에서 다양한 전략(알고리즘)을 사용해야 합니다. 그렇지 않으면 전략이 향후 다른 방식으로 구현될 수 있습니다.
(3) 특정 전략(알고리즘)의 구현 세부 사항은 고객에게 숨겨져 있으며 서로 완전히 독립적입니다.
(4) 클라이언트는 모든 전략 클래스를 알아야 하며 어떤 전략 클래스를 사용할지 결정해야 합니다. 전략 모드는 클라이언트가 모든 알고리즘이나 동작을 알고 있는 경우에만 적용 가능합니다.
(5) 전략 패턴은 많은 전략 클래스를 생성하며 각 특정 전략 클래스는 새로운 클래스를 생성합니다.
장점:1. 전략 패턴은 관련 알고리즘 계열을 관리하는 방법을 제공합니다2. 알고리즘은 독립적인 전략 클래스에 포함되어 있으므로 Context
3를 사용합니다. 전략 패턴을 사용하면 여러 조건부 전송 문을 피할 수 있습니다
코드는 다음과 같습니다.<?php interface Love { function sajiao(); } class KeAi implements Love { function sajiao( ) { echo '心怀不惧,才能翱翔于天际<br />'; } } class Tiger implements Love { function sajiao( ) { echo '智商太低会传染,离我远点<br />' ; } } class GirlFriend { protected $xingge; function __construct($xingge) { $this->xingge = $xingge ; } function sajiao( ) { $this->xingge->sajiao(); } } $keai = new KeAi; $li = new GirlFriend($keai); $li ->sajiao();
실행 결과는 다음과 같습니다.
추천 학습: "PHP Video Tutorial"
위 내용은 PHP에서 어댑터 모드와 전략 모드 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!