이 글의 내용은 PHP 디자인 패턴에 관한 것입니다: PHP 팩토리 패턴(코드 포함)에 대한 소개입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
팩토리 패턴은 클래스의 인스턴스화 세부 사항을 숨기는 방법으로, 일련의 클래스에 대해 동일한 인스턴스화 방법을 사용하면 동일한 인터페이스를 구현하는 더 많은 클래스에 대한 객체를 생성하는 방법을 쉽게 확장할 수 있습니다.
예제 적용 시나리오는 다음과 같습니다.
1) 온라인 결제
WeChat 결제, Alipay 결제, UnionPay 결제 등 다양한 결제 방법이 있습니다. 해당 결제 방법은 사용자의 선택에 따라 채택됩니다.
2) 방문 통계
In; 비즈니스 더 복잡한 프로젝트에서 사용자는 기사 액세스, 작성자 액세스, 기사 디렉토리 액세스 등과 같은 다양한 개체에 액세스합니다. 동일한 액세스 기록이 기록되지만 기록된 정보는 다릅니다
공장 모델의 원리:
먼저 , 여러 개체를 기반으로 동일한 동작으로 인터페이스를 설계하고, 이러한 클래스가 이 인터페이스를 구현하도록 한 다음, 다양한 매개변수에 따라 다양한 클래스를 인스턴스화할 수 있는 인스턴스화 팩토리를 생성합니다.
공장 패턴의 구체적인 구현:
/* * 形状接口 */interface Shape{ public function area();}/* * 长方形类,实现了形状接口 */class Rectangle implements Shape{ private $long; private $width; function __construct($long,$width) { $this->long = $long; $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return $this->long * $this->width; } }/* * 正方形类,实现了形状接口 */class Square implements Shape{ private $width; function __construct($width) { $this->width = $width; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pow($this->width,2); } }/* * 圆形类,实现了形状接口 */class Circle implements Shape{ private $radiu; function __construct($radiu) { $this->radiu = $radiu; } /* * 实现面积方法 */ public function area() { // TODO: Implement area() method. return pi()*pow($this->radiu,2); } }class ShapeFactory{ /* * 获取实例化的形状对象 * ...$args 表示接受不限个数的参数 */ public function getShpae(...$args) { /* * 第一个参数为形状名,后面的参数为形状的尺寸 */ switch($args[0]) { case 'Rectangle': return new Rectangle($args[1],$args[2]); break; case 'Square': return new Square($args[1]); break; case 'Circle': return new Circle($args[1]); break; } return null; } }$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area(); print_r($area);/* Array ( [0] => 6 [1] => 4 [2] => 12.566370614359 ) */
추천 관련 기사:
PHP에서 파일의 첫 번째 수준 디렉터리를 가져오는 방법(순수 코드)
위도와 경도를 사용하여 사이의 거리를 계산하는 방법 PHP의 두 점(순수 코드) )
위 내용은 PHP 디자인 패턴: PHP 팩토리 패턴 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!