บทนำสู่รูปแบบการออกแบบใน PHP
เผยแพร่แล้ว: 2020-04-14รูปแบบการออกแบบ PHP ได้รับการพิสูจน์แล้วว่ามีประโยชน์อย่างยิ่งต่อนักพัฒนาและเป็นเครื่องมือแก้ปัญหาที่สำคัญ ในการเขียนโค้ดที่มีประสิทธิภาพ นักพัฒนาต้องปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด รูปแบบการออกแบบ PHP เป็นแนวคิดการเขียนโปรแกรมเชิงวัตถุ (OOP) ซึ่งตอนนี้ยังใช้ในโครงการ Drupal 8 ด้วย Drupal 8 ที่นำแนวคิด PHP และ OOP ที่ทันสมัยมาใช้ รูปแบบการออกแบบสามารถใช้ประโยชน์ได้สำหรับการเขียนโปรแกรมที่สะอาดขึ้นและมีประสิทธิภาพมากขึ้น

Design Pattern ใน PHP คืออะไร?
ในงานวิศวกรรมซอฟต์แวร์ Design Pattern เป็นวิธีแก้ปัญหาทั่วไปที่ทำซ้ำได้สำหรับปัญหาที่เกิดขึ้นโดยทั่วไปในการออกแบบซอฟต์แวร์ การออกแบบเชิงวัตถุที่ดีควรนำมาใช้ใหม่ บำรุงรักษาได้ และขยายได้ และรูปแบบการออกแบบใน PHP อาจมีประโยชน์มากในการทำเช่นนั้น ไม่เพียงแต่ช่วยในการแก้ปัญหา แต่ยังหมายถึงวิธีที่ดีที่สุดในการจัดการกับความท้าทายทั่วไป
ประโยชน์ของการใช้รูปแบบการออกแบบ PHP
ประโยชน์หลักของรูปแบบการออกแบบใน PHP คือ:
- patters การออกแบบ PHP ช่วยในการแก้ปัญหาซ้ำ ๆ ที่ต้องเผชิญในระหว่างการพัฒนา
- การใช้รูปแบบการออกแบบใน PHP ทำให้การสื่อสารระหว่างนักออกแบบมีประสิทธิภาพมากขึ้น
- นักพัฒนาคนอื่นๆ ที่กำลังดูโค้ดของคุณไม่จำเป็นต้องลำบากในการทำความเข้าใจ เนื่องจากโค้ดมีโครงสร้างที่ดีด้วยรูปแบบการออกแบบ
- การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดจะช่วยสร้างซอฟต์แวร์ที่มีประสิทธิภาพมากขึ้น
- ช่วยให้พัฒนาได้เร็วและง่ายขึ้น
รูปแบบการออกแบบที่ใช้กันอย่างแพร่หลายใน PHP
Design Patterns สามารถใช้ในสถานการณ์ต่างๆ เพื่อแก้ปัญหาที่คล้ายคลึงกัน รูปแบบการออกแบบมีประมาณ 23 รูปแบบที่สามารถแบ่งออกได้เป็น 3 ประเภทใหญ่ๆ คือ รูปแบบการออกแบบ - รูปแบบการสร้างสรรค์ โครงสร้าง และพฤติกรรม
รูปแบบการสร้างสรรค์: รูปแบบการออกแบบที่ใช้ในกลไกการสร้างวัตถุ เพื่อสร้างวัตถุที่สามารถแยกออกจากระบบที่นำมาใช้
รูปแบบโครงสร้าง: สิ่งนี้ทำให้การออกแบบง่ายขึ้นโดยระบุวิธีง่ายๆ ในการตระหนักถึงความสัมพันธ์ระหว่างหน่วยงาน
รูปแบบพฤติกรรม: ใช้ในการจัดการความสัมพันธ์ ความรับผิดชอบ และอัลกอริธึมระหว่างอ็อบเจกต์
แบบโรงงาน
ใช้รูปแบบโรงงานเพื่อสร้างวัตถุ ถูกต้อง — สร้างวัตถุและไม่สร้างวัตถุ เมื่อเราสร้างวัตถุ เราจะสร้างมันขึ้นมาก่อนแล้วจึงเริ่มต้นมัน โดยปกติ ต้องใช้ตรรกะบางอย่างและดำเนินการหลายขั้นตอน ด้วยเหตุนี้ การมีทุกสิ่งไว้ในที่เดียวและนำกลับมาใช้ใหม่ได้ทุกเมื่อที่คุณต้องการสร้างออบเจ็กต์ใหม่ในลักษณะเดียวกันจึงเป็นเรื่องที่สมเหตุสมผล โดยพื้นฐานแล้วนั่นคือการใช้รูปแบบโรงงาน
เป็นความคิดที่ดีที่จะมีอินเทอร์เฟซสำหรับโรงงานของเราและให้โค้ดของเราพึ่งพามัน ไม่ใช่ในโรงงานที่เป็นรูปธรรม
อินเตอร์เฟซ FamilyFactoryInterface { สาธารณะ การทำงาน สร้าง () : ครอบครัว } |
ถัดไป ใช้ส่วนต่อประสานโรงงานกับคลาสต่อไปนี้:
ระดับ FamilyFactory ดำเนินการ FamilyFactoryInterface { สาธารณะ การทำงาน สร้าง () : ครอบครัว { ครอบครัว $ ครอบครัว = ครอบครัว ใหม่ (); // เริ่มต้นครอบครัวของคุณ ส่งคืนครอบครัว $; } } |
รูปแบบอะแดปเตอร์
ในรูปแบบการออกแบบอแด็ปเตอร์ คลาสจะเปลี่ยนอินเทอร์เฟซของคลาสหนึ่งเป็นคลาสอื่น ในตัวอย่างนี้ เรามีคลาส TextBook ที่มีเมธอด getTitle() และ getAuthor() ลูกค้าคาดหวังเมธอด getTitleAndAuthor() เพื่อ "ปรับ" SimpleBook สำหรับ demoAdapter เรามีคลาสอแด็ปเตอร์ BookAdapter ซึ่งรับอินสแตนซ์ของ TextBook และใช้เมธอด TextBook getTitle() และ getAuthor() ในเมธอด getTitleAndAuthor ของตัวเอง
<?php ชื่อ $ ส่วนตัว ; $นี้ ->ผู้เขียน = $author_in; การทำงาน getTitle () { |
รูปแบบ PHP Singleton
เพื่อจำกัดการสร้างอินสแตนซ์ของคลาสให้เป็นอ็อบเจ็กต์เดียว จะใช้รูปแบบซิงเกิลตันใน PHP สิ่งนี้มีประโยชน์เมื่อต้องการเพียงหนึ่งอ็อบเจ็กต์ทั่วทั้งระบบ เป็นการเหมาะสมที่จะอนุญาตให้เข้าถึงอินสแตนซ์ของบางคลาสได้เพียงอินสแตนซ์เดียวในขณะออกแบบเว็บแอปพลิเคชัน เพื่อป้องกันการสร้างอ็อบเจ็กต์อย่างชัดเจนจากคลาสรูปแบบซิงเกิลตัน คอนสตรัคเตอร์ส่วนตัวจะถูกใช้
<?php ![]() |
รูปแบบผู้สังเกตใน PHP
รูปแบบ PHP Observer ใช้เพื่อเตือนส่วนที่เหลือของระบบเกี่ยวกับเหตุการณ์เฉพาะในบางสถานที่
ตัวอย่างเช่น หากเราต้องสร้าง โรงละคร เพื่อแสดงภาพยนตร์ให้นักวิจารณ์ เรากำหนดคลาส โรงละคร ด้วยวิธีการปัจจุบัน ก่อนนำเสนอหนัง เราต้องการส่งข้อความไปยังโทรศัพท์มือถือของนักวิจารณ์ จากนั้นในช่วงกลางของภาพยนตร์เราต้องการหยุดภาพยนตร์เป็นเวลา 5 นาทีเพื่อให้นักวิจารณ์มีช่วงเวลา สุดท้ายนี้ หลังจากดูหนังจบ เราต้องการขอให้นักวิจารณ์ทิ้งคำตอบไว้ ดังนั้นในรูปแบบผู้สังเกตการณ์สำหรับ PHP ออบเจ็กต์ผู้สังเกตการณ์จะได้รับแจ้งเมื่อสถานะเปลี่ยนเท่านั้น
นี่คือลักษณะของรหัส -
ระดับ โรงละคร { |
รูปแบบมัณฑนากรสำหรับ PHP
รูปแบบมัณฑนากรจะใช้เมื่อคุณต้องการเปลี่ยนลักษณะของวัตถุในขณะใช้งาน และลดจำนวนการสืบทอดที่ไม่จำเป็นและจำนวนคลาส มันสามารถอธิบายได้ด้วยตัวอย่าง สมมติว่าเรามีคลาสโซฟาและเตียงนอน และทั้งคู่ก็ติดตั้ง SleeperInterface
อินเตอร์เฟซ อินเทอร์เฟซ Sleepr { |
ทั้งโซฟาและเตียงนอนมีพฤติกรรมการนอนหลับเหมือนกัน ตอนนี้ เราต้องการโซฟาและเตียงอื่นๆ ที่มีฟังก์ชันการทำงานเพิ่มเติมที่จะบอกให้ผู้ใช้ทราบถึงการติดตามการนอนหลับเมื่อนอนบนโซฟาหรือเตียง ด้วยการสืบทอด เราสามารถแก้ปัญหานี้ได้ดังนี้:
ระดับ สมาร์ทโซฟา ยืดออก โซฟา { |
ตอนนี้เรามีทั้งหมด 4 คลาส อย่างไรก็ตาม เราสามารถแก้ปัญหานี้ได้ 3 คลาสด้วยลวดลายมัณฑนากรเท่านั้น โดยใช้วิธีดังนี้:
ระดับ SmartSleeper ดำเนินการ อินเทอร์เฟซสำหรับผู้นอน { |
ที่นี่ เราได้เปิดตัวสลีปรูปแบบใหม่ที่ทำหน้าที่เหมือนพร็อกซี แต่มีฟังก์ชันพิเศษอยู่ด้านบน
ใช้ประโยชน์จากรูปแบบการออกแบบใน Drupal 8
แม้ว่าจะมีรูปแบบการออกแบบมากมายที่สร้างไว้แล้วใน Drupal ก่อน Drupal 8 แต่ตอนนี้ Drupal 8 ประกอบด้วยรูปแบบมากมายที่ก่อนหน้านี้ไม่พร้อมใช้งาน รูปแบบใหม่เหล่านี้บางส่วนแทนที่รูปแบบเก่าอย่างสมบูรณ์ ในขณะที่รูปแบบอื่นๆ ได้แนะนำคุณสมบัติใหม่บางอย่างให้กับ Drupal 8
รูปแบบการออกแบบที่ใช้ใน Drupal 8 ประกอบด้วย:
- รูปแบบการเขียนโปรแกรมเชิงวัตถุ (OOP)
- การฉีดพึ่งพา
- แบบโรงงาน
- รูปแบบซิงเกิล
OOP ไม่ใช่รูปแบบเดียวจริงๆ แต่เป็นวิธีคิดและจัดโครงสร้างโค้ดที่ต่างไปจากเดิมอย่างสิ้นเชิง ซึ่งทำได้มากกว่าแค่รูปแบบการออกแบบ เป็นพื้นฐานสำหรับรูปแบบการออกแบบซอฟต์แวร์ยอดนิยมจำนวนมากที่ใช้อยู่ในปัจจุบัน รวมถึงรูปแบบที่ใช้ใน Drupal 8 ซึ่งเปิดตัวใน Drupal 7 แต่ไม่ได้ใช้อย่างกว้างขวาง และไม่จำเป็น สถานการณ์ใน Drupal 8 ในตอนนี้แตกต่างออกไป มีการใช้กันอย่างแพร่หลาย และจำเป็น
การฉีดพึ่งพา
การพึ่งพาการฉีดเป็นรูปแบบการออกแบบซอฟต์แวร์ที่จะช่วยให้คุณลบการพึ่งพาแบบฮาร์ดโค้ดและทำให้สามารถเปลี่ยนได้บนรันไทม์หรือในเวลาคอมไพล์ การเพิ่มการพึ่งพาอาศัยกันเป็นเรื่องง่ายและจะไม่เข้าไปยุ่งกับโค้ดที่มีอยู่ของคุณ Drupal 8 นำเสนอแนวคิดของบริการเพื่อแยกฟังก์ชันการทำงานที่ใช้ซ้ำได้ core.services.yml เป็นตัวอย่างสำหรับการฉีดพึ่งพาใน Drupal 8 เราได้พูดถึง Factory Pattern และ Singleton Pattern ใน PHP ข้างต้นแล้ว

