이 기사에서는 PHP 디자인 패턴의 추상 팩토리 패턴을 이해하도록 안내합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
Factory Pattern 시리즈의 하이라이트는 바로 소문난 Abstract Factory Pattern입니다. 처음 이름을 들었을 때 어떤 느낌이 들었나요? 어쨌든, 나는 이것이 매우 고급적이어야 한다고 생각합니다. 결국 "추상"이라는 단어가 포함되어 있기 때문입니다. 이 두 단어는 정말 발전에 있어서 수준 높은 느낌을 가지고 있다고 하네요. 추상이라는 단어와 함께 사용하면 모든 것이 아주 강력한 것 같습니다. 그러나 Abstract Factory는 실제로 팩토리 패턴의 큰형이라고 할 수 있습니다.
Gof 클래스 다이어그램 및 설명
사실 팩토리 메소드 패턴만 이해하면 추상 팩토리 패턴도 이해하기 쉽습니다. 어떻게 말하나요? 여전히 하위 클래스로 지연되고 지정된 객체를 반환합니다. 추상 팩토리는 하나의 객체뿐만 아니라 여러 객체를 반환합니다.
GoF 정의: 특정 클래스를 지정하지 않고 일련의 관련되거나 상호 의존적인 개체를 생성하기 위한 인터페이스를 제공합니다.
GoF 클래스 다이어그램:
- 왼쪽에는 두 개의 팩토리 1과 2가 있는데, 둘 다 추상 팩토리를 상속하고 CreateProductA 및 CreateProductB 메서드를 구현합니다.
- Factory 1은 ProductA1 및 ProductB1을 생성합니다.
- 마찬가지로, Factory 2는 ProductA2와 ProductB2를 생산합니다. A1과 B1의 관계는 유사한 관련 제품이고, B1과 B2는 유사한 관련 제품
// 商品A抽象接口 interface AbstractProductA { public function show(): void; } // 商品A1实现 class ProductA1 implements AbstractProductA { public function show(): void { echo 'ProductA1 is Show!' . PHP_EOL; } } // 商品A2实现 class ProductA2 implements AbstractProductA { public function show(): void { echo 'ProductA2 is Show!' . PHP_EOL; } } // 商品B抽象接口 interface AbstractProductB { public function show(): void; } // 商品B1实现 class ProductB1 implements AbstractProductB { public function show(): void { echo 'ProductB1 is Show!' . PHP_EOL; } } // 商品B2实现 class ProductB2 implements AbstractProductB { public function show(): void { echo 'ProductB2 is Show!' . PHP_EOL; } }그리고 저희 공장도 1공장과 2공장이고, 1공장은 A1과 B1이라는 두 개의 관련 제품을 생산하고, 연결된 제품에 대해서는 2공장에서 2개의 관련 제품을 생산합니다. 제품, A2 및 B2. 좋습니다. 여기서는 아직 다소 추상적이라는 점을 알고 있으며, 이것이 왜 그런지 이해하지 못할 수도 있습니다. 계속해서 휴대폰 제작을 예로 들어보겠습니다.
저희 휴대폰 브랜드가 인기를 끌면서 휴대폰 필름, 휴대폰 케이스 등 주변기기 제품도 추상팩토리에 넘겨서 도와드리고 있습니다. 지난번 말씀드렸던 것처럼 이미 여러 종류의 휴대폰을 보유하고 있기 때문에 앞으로도 계속해서 헝양공장(Factory1)에서 휴대폰 모델 1001(ProductA1)을 생산하고 동시에 휴대폰 필름(ProductB1)을 생산하게 됩니다. 모델 1001 휴대폰 케이스(ProductB1)도 헝양공장에서 생산됩니다. 휴대폰 모델 1002(ProductA2)는 아직 정저우 공장(Factory2)에 있기 때문에 이 모델의 휴대폰 필름(ProductB2)과 휴대폰 필름(ProductC2)은 그들에게 맡겨야 한다. 그래서 저는 방금 주요 공장에 주문을 했습니다. 그들은 다른 공장에 저를 위해 완전한 휴대폰 제품 세트를 생산해 달라고 요청했고, 저는 그 세트를 직접 판매할 수 있었습니다! !
전체 코드: 추상 팩토리 패턴
https://github.com/zhangyue0503/designpatterns-php/blob/master/03.abstract-factory/source/abstract-factory.php
예시나리오: 이번에는 문자 메시지뿐만 아니라 푸시 메시지도 동시에 보내야 하는 비즈니스 요구 사항이 있습니다. 문자 메시지의 목적은 참여할 새로운 활동이 있음을 사용자에게 알리는 것인데, 푸시 알림은 사용자에게 새로운 활동을 알릴 뿐만 아니라 직접 클릭하여 빨간 봉투를 받을 수도 있다는 점이 흥미롭지 않나요? 다행스럽게도 우리가 이전에 선택한 클라우드 서비스 제공업체는 모두 SMS와 푸시 인터페이스를 모두 갖추고 있으므로 추상 팩토리를 사용하여 구현하겠습니다!이 영상을 보고도 아직도 조금 어지러우신가요? 사실 간단히 말하면 팩토리 클래스의 다양한 메소드를 통해 다양한 객체를 반환하는 것뿐입니다. 다시 문자 메시지의 예를 들어 설명해 보겠습니다!
SMS 전송 클래스 다이어그램
// 抽象工厂接口 interface AbstractFactory { // 创建商品A public function CreateProductA(): AbstractProductA; // 创建商品B public function CreateProductB(): AbstractProductB; } // 工厂1,实现商品A1和商品B1 class ConcreteFactory1 implements AbstractFactory { public function CreateProductA(): AbstractProductA { return new ProductA1(); } public function CreateProductB(): AbstractProductB { return new ProductB1(); } } // 工厂2,实现商品A2和商品B2 class ConcreteFactory2 implements AbstractFactory { public function CreateProductA(): AbstractProductA { return new ProductA2(); } public function CreateProductB(): AbstractProductB { return new ProductB2(); } }
전체 소스 코드: SMS 전송 팩토리 메소드
https://github.com/zhangyue0503/designpatterns-php/blob/master/03.abstract-factory/source / abstract-factory-message-push.phpDescription 매우 명확합니까?
맞습니다. 하나는 메시지 전송용이고 다른 하나는 푸시 메시지 전송용인 푸시입니다. 추상 팩토리에서는 인터페이스 구현자가 문자 메시지 전송으로 돌아가는 두 가지 메소드만 구현하면 됩니다.
- 푸시 알림은 보내지 않고 문자만 보내고 싶다고 하셨죠? 물론 가능합니다. 다만 createPush() 메서드를 호출하지 마세요.
- 추상 팩토리는 어떤 시나리오에 가장 적합합니까? 분명히 일련의 관련 객체를 생성하는 것입니다
- 팩토리 메소드 패턴은 추상 팩토리의 핵심입니다. 이는 여러 팩토리 메소드를 대형 공장에 투입하여 전체 제품 세트(주변 장치 포함)를 생산하는 것과 같습니다. 단일 제품
- 추천 학습: " PHP 비디오 튜토리얼
- "
위 내용은 PHP의 추상 팩토리 패턴에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

뜨거운 주제



