지금까지 php팩토리 모드의 장점과 팩토리 모드의 의미, 팩토리 모드의 세 가지 상황을 소개해드렸습니다. 그래서 오늘은 계속해서 php 팩토리 모드의 역할에 대해 소개해드리겠습니다!
팩토리 패턴에는 단순 팩토리, 팩토리 메소드, 추상 팩토리의 세 가지 유형이 있습니다. 세 가지 유형의 팩토리의 차이점은 추상 팩토리에는 여러 제품 라인이 있는 반면, 팩토리 메소드에는 하나의 제품 라인만 있다는 것입니다. 추상 팩토리의 단순화. 팩토리 메소드는 단순 팩토리와 반대되는 개념으로 얼핏 보면 코드를 많이 추가하지만 단순 팩토리와 동일한 기능을 구현하는 것처럼 보인다. 하지만 핵심은 단순 팩토리가 디자인 패턴의 개폐 원리를 엄격하게 따르지 않는다는 것입니다. 새로운 제품을 추가해야 할 경우 팩토리 코드도 수정해야 합니다. 그러나 팩토리 메소드는 열기 및 닫기 원칙을 엄격히 준수합니다. 모드는 추상 팩토리 인터페이스만 담당하며 특정 팩토리는 고객이 확장하도록 남겨둡니다. 분업 과정에서 핵심 엔지니어는 추상 팩토리와 추상 제품의 정의를 담당하고, 비즈니스 엔지니어는 특정 공장과 특정 제품의 구현을 담당합니다. 추상화 계층이 잘 설계되어 있는 한 프레임워크는 매우 안정적입니다.
간단한 팩토리
장점: 제품 사용자가 제품 클래스의 생성 과정을 신경 쓸 필요가 없으며, 특정 제품의 구현 클래스와의 디커플링 효과를 얻습니다.
단점: "개방-폐쇄" 원칙(OCP)을 위반합니다. , 왜냐하면 새로운 제품 클래스를 추가할 때 원래 팩토리 메소드를 수정해야 하기 때문입니다.
적용 가능한 경우: 팩토리 클래스가 생성을 담당하는 객체가 상대적으로 적은 경우
구현 방법: 간단한 공통 클래스를 정의합니다. 정적 생성 방법을 정의하고 전달된 유형 매개변수에 따라 해당 특정 상위 클래스를 생성합니다구체 코드는 다음과 같습니다<?php//抽象产品interface Person { public function getName(); }//具体产品实现class Teacher implements Person { public function getName() { return "老师n"; }}class Student implements Person { public function getName() { return "学生n"; }}//简单工厂class SimpleFactory { public static function getPerson($type) { $person = null; if ($type == 'teacher') { $person = new Teacher(); } elseif ($type == 'student') { $person = new Student(); } return $person; }}//简单工厂调用class SimpleClient { function main() { // 如果不用工厂模式,则需要提前指定具体类 // $person = new Teacher(); // echo $person->getName(); // $person = new Student(); // echo $person->getName(); // 用工厂模式,则不需要知道对象由什么类产生,交给工厂去决定 $person = SimpleFactory::getPerson('teacher'); echo $person->getName(); $person = SimpleFactory::getPerson('student'); echo $person->getName(); }}
요약:
이 기사를 통해 모든 사람이 PHP 팩토리 패턴의 역할에 대한 새로운 개념이 있습니다. 귀하의 작업에 도움이 되기를 바랍니다. ~관련 권장 사항:
위 내용은 PHP 디자인 패턴 팩토리 패턴의 역할은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!