วนซ้ำ
Iteratorเป็นรูปแบบการออกแบบพฤติกรรม แสดงวัตถุที่อนุญาตให้เข้าถึงองค์ประกอบของวัตถุรวมตามลำดับโดยไม่ต้องใช้คำอธิบายของวัตถุรวมแต่ละรายการ
ตัวอย่างเช่น องค์ประกอบต่างๆ เช่น ต้นไม้ รายการที่เชื่อมโยง ตารางแฮช และอาร์เรย์สามารถผ่าน (และแก้ไข) โดยใช้วัตถุ Iterator
การวนซ้ำผ่านองค์ประกอบทำได้โดยตัววนซ้ำ ไม่ใช่โดยตัวคอลเลกชันเอง สิ่งนี้ทำให้อินเทอร์เฟซและการใช้งานคอลเลกชันง่ายขึ้น และส่งเสริมการแยกข้อกังวลที่มีเหตุผลมากขึ้น
คุณลักษณะของตัววนซ้ำที่ดำเนินการอย่างสมบูรณ์คือรหัสที่ใช้ตัววนซ้ำอาจไม่รู้อะไรเลยเกี่ยวกับประเภทของการรวมที่วนซ้ำ
วิธีนี้ใช้บ่อยมาก ตัวอย่างเช่น คุณส่งคิวรี SQL ไปยังฐานข้อมูล และตอบกลับกลับมาด้วยตัววนซ้ำ (ในศัพท์ SQL โดยทั่วไปจะเรียกว่าเคอร์เซอร์) และด้วยความช่วยเหลือของตัววนซ้ำที่เป็นผลลัพธ์ คุณสามารถรับแถวจากการตอบสนองของ SQL ทีละแถว
สั่งการ
คำสั่งคือรูปแบบการออกแบบเชิงพฤติกรรมที่ใช้ในการเขียนโปรแกรมเชิงวัตถุที่แสดงถึงการกระทำ วัตถุคำสั่งประกอบด้วยการกระทำและพารามิเตอร์ของมัน
ในการเรียกใช้เมธอด คุณต้อง:
- การอ้างอิงวัตถุ
- ชื่อเมธอด (การอ้างอิงเมธอด)
- ค่าพารามิเตอร์ของเมธอด
- การอ้างอิงถึงบริบทที่มีวัตถุที่ใช้
ข้อมูลทั้งหมดนี้จำเป็นต้องบรรจุลงในวัตถุเดียว - คำสั่ง ( command )
แต่นั่นไม่ใช่ทั้งหมด เพราะต้องมีคนสั่งการ ดังนั้นรูปแบบนี้จึงรวมถึงเอนทิตีอีกสี่รายการ: คำสั่ง ( command ) ตัวรับคำสั่ง ( ตัวรับ ) ตัวเรียกคำสั่ง ( ตัวเรียกใช้ ) และไคลเอ็นต์ ( ตัวไคลเอ็นต์ )
วัตถุสั่งการรู้เกี่ยวกับเครื่องรับและเรียกวิธีการรับ ค่าพารามิเตอร์ตัวรับจะถูกเก็บไว้ในคำสั่ง ผู้เรียก (ผู้เรียกใช้) รู้วิธีดำเนินการคำสั่งและอาจติดตามคำสั่งที่ดำเนินการ ผู้เรียก (ผู้เรียกใช้) ไม่รู้อะไรเลยเกี่ยวกับคำสั่งเฉพาะ รู้เพียงเกี่ยวกับอินเทอร์เฟซ
วัตถุทั้งสอง (วัตถุการโทรและวัตถุคำสั่งหลายตัว) เป็นของวัตถุไคลเอนต์ ลูกค้าเป็นผู้ตัดสินใจว่าจะใช้คำสั่งใดและเมื่อใด ในการดำเนินการคำสั่ง มันจะส่งวัตถุคำสั่งไปยังผู้เรียก (ผู้เรียก)
การใช้อ็อบเจกต์คำสั่งทำให้ง่ายต่อการสร้างคอมโพเนนต์ที่ใช้ร่วมกันซึ่งคุณต้องมอบหมายหรือเรียกเมธอดเมื่อใดก็ได้ โดยไม่ต้องรู้เมธอดคลาสหรือพารามิเตอร์เมธอด
การใช้ออบเจกต์ผู้เรียก (ผู้เรียกใช้) ช่วยให้คุณสามารถเก็บบันทึกคำสั่งที่ดำเนินการโดยที่ไคลเอนต์ไม่จำเป็นต้องรู้เกี่ยวกับโมเดลการบัญชีนี้ (การบัญชีดังกล่าวอาจมีประโยชน์ เช่น การนำคำสั่งเลิกทำและทำซ้ำ)
ตัวอย่างเช่น คุณกำลังเขียนโปรแกรมที่ให้คุณทำงานต่างๆ ตามกำหนดเวลา ในแง่หนึ่ง โปรแกรมของคุณจะติดตามงานและจัดการการเรียกใช้ ในทางกลับกัน โปรแกรมสามารถมีตัวดำเนินการหลายตัว ซึ่งแต่ละตัวสามารถดำเนินการคำสั่งประเภทของตัวเองได้ ตัวอย่างเช่น การส่ง SMS การส่งจดหมาย ส่งข้อความไปยัง Telegram เป็นต้น
ผู้สังเกตการณ์
ผู้สังเกตการณ์เป็นรูปแบบการออกแบบพฤติกรรม ใช้กลไกคลาสที่อนุญาตให้วัตถุของคลาสนี้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงในสถานะของวัตถุอื่นและสังเกตวัตถุเหล่านั้น
คลาสที่คลาสอื่นๆ สมัครรับ ข้อมูลเรียกว่า Subjects และคลาสที่สมัครรับข้อมูลเรียกว่าผู้สังเกตการณ์
เมื่อนำรูปแบบ Observer ไปใช้ โดยทั่วไปจะใช้คลาสต่อไปนี้:
- Observable - อินเทอร์เฟซที่กำหนดวิธีการเพิ่ม ลบ และแจ้งเตือนผู้สังเกตการณ์
- ผู้สังเกตการณ์ - อินเทอร์เฟซที่ผู้สังเกตการณ์ได้รับการแจ้งเตือน
- ConcreteObservableเป็นคลาสคอนกรีตที่ใช้ อินเทอร์เฟซ ที่สังเกตได้
- ConcreteObserverเป็นคลาสคอนกรีตที่ใช้อ ร์เฟซ สังเกตการณ์
รูปแบบผู้สังเกตการณ์จะใช้เมื่อระบบ:
- มีวัตถุอย่างน้อยหนึ่งรายการที่ส่งข้อความ
- มีผู้รับข้อความอย่างน้อยหนึ่งคน และจำนวนและองค์ประกอบอาจเปลี่ยนแปลงในขณะที่แอปพลิเคชันกำลังทำงาน
- หลีกเลี่ยงการมีเพศสัมพันธ์ที่แข็งแกร่งของคลาสที่มีปฏิสัมพันธ์
รูปแบบนี้มักใช้ในสถานการณ์ที่ผู้ส่งข้อความไม่สนใจในสิ่งที่ผู้รับทำกับข้อมูลที่ให้ไว้
ผู้เข้าชม
ผู้เยี่ยมชมเป็นรูปแบบการออกแบบเชิงพฤติกรรมที่อธิบายการดำเนินการที่ดำเนินการกับวัตถุของคลาสอื่น เมื่อผู้เข้าชมเปลี่ยน ไม่จำเป็นต้องเปลี่ยนคลาสที่ให้บริการ
เทมเพลตนี้แสดงให้เห็นถึงเทคนิคดั้งเดิมในการกู้คืนข้อมูลประเภทที่สูญหายโดยไม่ต้องอาศัยการดาวน์แคสต์ซ้ำซ้อน
คุณต้องดำเนินการตัดการเชื่อมต่อบางอย่างกับออบเจกต์จำนวนหนึ่ง แต่คุณต้องหลีกเลี่ยงการทำให้โค้ดเสียหาย และไม่มีทางหรือต้องการสอบถามประเภทของแต่ละโหนดและส่งตัวชี้ไปยังประเภทที่ถูกต้องก่อนดำเนินการตามที่ต้องการ
ควรใช้เทมเพลตหาก:
- มีวัตถุต่าง ๆ ของคลาสต่าง ๆ ที่มีอินเตอร์เฟสต่างกัน แต่การดำเนินการจะต้องดำเนินการกับวัตถุเหล่านั้นซึ่งขึ้นอยู่กับคลาสเฉพาะ
- ในโครงสร้างมีความจำเป็นต้องดำเนินการต่าง ๆ ที่ทำให้โครงสร้างซับซ้อน
- มักจะมีการเพิ่มการดำเนินการใหม่ในโครงสร้าง
คนกลาง
Mediatorคือรูปแบบการออกแบบเชิงพฤติกรรมที่ช่วยให้ออบเจ็กต์หลายรายการโต้ตอบกันในขณะที่รักษาการมีเพศสัมพันธ์แบบหลวมๆ และหลีกเลี่ยงความจำเป็นที่ออบเจ็กต์จะอ้างถึงซึ่งกันและกันอย่างชัดเจน
รูปแบบ Mediator ช่วยให้คุณมั่นใจได้ถึงการโต้ตอบของออบเจ็กต์จำนวนมาก ในขณะที่สร้างการเชื่อมต่อแบบหลวมและขจัดความจำเป็นที่อ็อบเจ็กต์จะอ้างถึงซึ่งกันและกันอย่างชัดเจน
คนกลางกำหนดอินเทอร์เฟซสำหรับแลกเปลี่ยนข้อมูลกับวัตถุเพื่อนร่วมงาน, ผู้ไกล่เกลี่ยโดยเฉพาะประสานงานการกระทำของวัตถุเพื่อนร่วมงาน.
แต่ละ ชั้นเรียน ของเพื่อนร่วมงานรู้เกี่ยวกับวัตถุของตนคนกลางเพื่อนร่วมงานทุก คน แลกเปลี่ยนข้อมูลกับคนกลางเท่านั้น ในกรณีที่ไม่มีเขา พวกเขาจะต้องแลกเปลี่ยนข้อมูลโดยตรง
เพื่อนร่วมงานส่งคำขอไปยังผู้ค้าปลีก/span> และรับคำขอจากมัน ผู้ไกล่เกลี่ยใช้พฤติกรรมความร่วมมือโดยส่งต่อคำขอแต่ละรายการไปยังหนึ่งรายการขึ้นไปเพื่อนร่วมงาน.
GO TO FULL VERSION