이전에 php팩토리 모드의 세 가지 유형을 소개했고, php 팩토리 모드가 무엇이고 왜 php 팩토리 모드를 사용해야 하는지 오늘은 php 팩토리 모드를 사용하면 어떤 이점이 있는지 자세히 소개하겠습니다. !
일반적으로 클래스를 인스턴스화할 때 클래스가 생성될 때 다양한 매개변수를 기반으로 필요한 결과를 피드백할 수 있도록 몇 가지 매개변수를 제공합니다.
예를 들어 다음은 매우 간단한 User 클래스입니다.
코드는 다음과 같습니다.
<?php interface IUser{ function getName(); function getAge(); } class User implements IUser{ protected $_name; protected $_age; function construct($name, $age){ $this->_name = $name; $this->_age = (int)$age; } function getName(){ return $this->_name; } function getAge(){ return $this->_age; } } ?>
이 클래스를 인스턴스화하려면 다음을 수행해야 합니다.
$ u = new User('Xiao Ming', 19);
일반적으로 이 클래스를 거의 사용하지 않는다면 그렇게 해도 큰 영향을 미치지 않으며 매우 좋습니다.
갑자기 이 클래스에 분류를 추가하고 Xiao Ming을 학생 그룹에 추가하고 싶습니다. 하지만 이 클래스를 수정하기 전에 여러 파일에서 여러 번 인스턴스화하면 매개변수를 추가하는 것은 다음과 같이 바꿔야 하기 때문에 매우 번거롭습니다.
$u = new User('Xiaoming',19,'student');
물론 매개변수를 다음으로 전달할 수도 있습니다. constructorfunction 기본 값 설정은 이런 종류의 작업 중복을 피하기 위해 사용되지만 실제로는 코드 우아함의 관점에서 좋지 않습니다. 식별자를 통해 매개변수 집합에 대응할 수 있는 팩토리 메서드가 있다고 상상해 보세요. , 그리고 이 매개변수를 특정 텍스트에 저장합니다. 문서는 배열 형식으로 팩토리 클래스에 직접 저장될 수 있습니다. 매개변수를 추가하거나 빼야 하는 경우에도 . 속성, 여기에서 코드를 바꿀 필요가 없습니다. 여기에는 팩토리 클래스가 있습니다(사용자 클래스에 직접 메서드를 저장할 수도 있습니다).
코드는 다음과 같습니다.
interface IUser{ function getName(); function getAge(); } class User implements IUser{ protected $_group; protected $_name; protected $_age; function construct($name, $age, $group){ $this->_group = $group; $this->_name = $name; $this->_age = (int)$age; } function getName(){ return $this->_name; } function getAge(){ return $this->_age; } } class Fuser{ private static $group = array( array(‘小明‘,19,‘学生‘), array(‘小王‘,19,‘学生‘) ); static function create($id){ list($name, $age, $group) = self::$group[(int)$id]; return new User($name, $age, $group); } } echo Fuser::create(0)->getName();
결과는 출력이어야 합니다. "샤오밍".
요약:
저는 친구들이 PHP 팩토리 패턴 사용의 이점을 어느 정도 이해하고 있으며 이 기사에서 배운 내용을 자신의 작업에서 연습할 수 있다고 믿습니다!
관련 추천:
PHP 팩토리 패턴의 3가지 형태의 샘플 코드에 대한 자세한 설명
위 내용은 PHP 팩토리 패턴 사용의 이점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!