PHP 전략 패턴 학습 - '심층 PHP 객체 지향 패턴 및 실습'에서 인용
#策略(Strategy)模式 #定义抽象类 Lesson abstract class Lesson{ private $duration; private $coststrategy; #定义属性 public function __construct($duration , CostStrategy $strategy){ #实例化时,传进来一个对象 #用CostStrategy 类来处理 某个行为,而不用调用自身的方法来处理 $this->duration =$duration; $this->coststrategy = $strategy; } public function cost(){ return $this->coststrategy->cost($this); # ??? ??? ??? ??? ??? ??? ??? ??? ??? } #不是用抽象类的 abstract CostStrategy 类 中的方法 cost 来实现的, #从输出的值看来 是用的 #TimedCostStrategy #FixedCostStrategy 中 的方法,所以 # 在实例化对象时,用了 #TimedCostStrategy #FixedCostStrategy 中 的方法 public function chargeType(){ return $this->coststrategy->chargeType(); } public function getDuration(){ return $this->duration; } } abstract class CostStrategy{ #抽象类是不能实例化的 abstract function cost( Lesson $lesson); #传入的参数是对象 abstract function chargeType(); } class TimedCostStrategy extends CostStrategy{ public function cost(Lesson $lesson){ return ($lesson->getDuration()*5); # 在Lesson 类中,getDuration 的返回值是 return $this->duration; } public function chargeType(){ return 'hourly rate!'; } } class FixedCostStrategy extends CostStrategy{ function cost(Lesson $lesson){ return 30; #此处为调用如何方法,只是单纯的返回一个值 } function chargeType(){ return 'fixed rate'; } } #继承类Lesson class Lecture extends Lesson{ } #继承类Lesson class Seminar extends Lesson{ } #实例化对象 $lessons[] = new Seminar(4,new TimedCostStrategy()); #生成了一个TimeConsTrategy的一个对象 $lessons[]= new Lecture(4 , new FixedCostStrategy()); #生成了一个FixedConsTrategy的一个对象 #分别 调用TimeConsTrategy && FixedConsTrategy 中的方法 const() 和 chargeType(),在执行遍历 foreach ($lessons as $lesson) { # 遍历输出 print "lesson charge {$lesson->cost()}==>>"; print "Charge type: {$lesson->chargeType()}<br/>"; }
위 내용은 "심층 PHP 객체지향 패턴 및 실습"에서 인용한 PHP 전략 모드 학습을 소개하고 있으며, 내용적인 측면도 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어에서 return의 사용법은 다음과 같습니다. 1. 반환 값 유형이 void인 함수의 경우 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 2. 반환 값 유형이 void가 아닌 함수의 경우 return 문은 함수 실행을 종료하는 것입니다. 결과는 호출자에게 반환됩니다. 3. 함수 실행을 조기에 종료합니다. 함수 내부에서는 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 함수가 값을 반환하지 않는 경우.

함수는 특정 기능을 포함하는 재사용 가능한 코드 블록으로, 입력 매개변수를 받아들이고 특정 작업을 수행하며 결과를 반환하는 것이 목적입니다. 코드 재사용성과 유지 관리성을 향상시키는 코드입니다.

소스 코드: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# 출력 위 코드의 출력은 간단히 결론을 내릴 수 있습니다. return은 finally 전에 실행됩니다. 바이트코드 수준에서 무슨 일이 일어나는지 살펴보겠습니다. 다음은 case1 메소드의 바이트코드 일부를 가로채서 소스 코드를 비교하여 각 명령어의 의미를 주석으로 표시합니다.

이번 글에서는 enumerate() 함수와 Python에서 “enumerate()” 함수의 목적에 대해 알아봅니다. enumerate() 함수란 무엇입니까? Python의 enumerate() 함수는 데이터 컬렉션을 매개변수로 받아들이고 열거형 객체를 반환합니다. 열거형 객체는 키-값 쌍으로 반환됩니다. 키는 각 항목에 해당하는 인덱스이고 값은 항목입니다. 구문 enumerate(iterable,start) 매개변수 iterable - 전달된 데이터 컬렉션은 iterablestart라는 열거형 개체로 반환될 수 있습니다. - 이름에서 알 수 있듯이 열거형 개체의 시작 인덱스는 start로 정의됩니다. 우리가 무시한다면

MySQL.proc 테이블의 역할과 기능에 대한 자세한 설명 MySQL은 널리 사용되는 관계형 데이터베이스 관리 시스템으로, 개발자가 MySQL을 사용할 때 저장 프로시저(StoredProcedure)를 생성하고 관리하는 경우가 많습니다. MySQL.proc 테이블은 저장 프로시저의 이름, 정의, 매개변수 등을 포함하여 데이터베이스의 모든 저장 프로시저와 관련된 정보를 저장하는 매우 중요한 시스템 테이블입니다. 이번 글에서는 MySQL.proc 테이블의 역할과 기능에 대해 자세히 설명하겠습니다.

Vue3.2 설정 구문 설탕은 Vue3.0의 번거로운 설정을 해결하기 위해 단일 파일 구성 요소(SFC)에서 결합된 API를 사용하는 컴파일 타임 구문 설탕입니다. 사용 중 문제점 1. 사용 중에 import로 도입된 선언된 변수, 함수 및 컨텐츠를 반환할 필요가 없습니다. //소개된 컨텐츠 가져오기 import{getToday. }from'./utils'//변수 constmsg='안녕하세요!'//함수 func

Vue.use 함수의 사용법 및 기능 Vue는 많은 유용한 기능을 제공하는 널리 사용되는 프런트 엔드 프레임워크입니다. 그 중 하나는 Vue 애플리케이션에서 플러그인을 사용할 수 있게 해주는 Vue.use 기능입니다. 이 기사에서는 Vue.use 함수의 사용법과 기능을 소개하고 몇 가지 코드 예제를 제공합니다. Vue.use 함수의 기본 사용법은 매우 간단합니다. Vue가 인스턴스화되기 전에 호출하고 매개변수로 사용하려는 플러그인을 전달하면 됩니다. 다음은 간단한 예입니다. //플러그인 소개 및 사용

JavaScript에서 return을 사용하려면 특정 코드 예제가 필요합니다. JavaScript에서 return 문은 함수에서 반환되는 값을 지정하는 데 사용됩니다. 함수 실행을 종료하는 데 사용할 수 있을 뿐만 아니라 함수가 호출된 위치에 값을 반환할 수도 있습니다. return 문에는 다음과 같은 일반적인 용도가 있습니다. 값 반환 return 문은 함수가 호출된 위치에 값을 반환하는 데 사용할 수 있습니다. 다음은 간단한 예입니다: functionadd(a,b){
