คำจำกัดความ: รูปแบบโรงงานนามธรรมให้อินเทอร์เฟซสำหรับการสร้างครอบครัวของวัตถุที่เกี่ยวข้องหรือขึ้นอยู่กับโดยไม่ต้องระบุคลาสคอนกรีต รูปแบบนี้มีประโยชน์อย่างยิ่งเมื่อระบบจำเป็นต้องเป็นอิสระจากวิธีการสร้างผลิตภัณฑ์ประกอบและเป็นตัวแทน
ตัวอย่างการใช้งาน: ลองนึกภาพการพัฒนาซอฟต์แวร์จำลองที่สามารถแสดงสภาพแวดล้อมที่แตกต่างกัน (ทางบก, ทะเล, อากาศ) การใช้รูปแบบของโรงงานนามธรรมคุณสามารถกำหนดอินเทอร์เฟซโรงงานด้วยวิธีการสร้างสัตว์และพืชประเภทต่าง ๆ จากนั้นใช้โรงงานคอนกรีตที่แตกต่างกันสำหรับแต่ละสภาพแวดล้อมแต่ละสภาพแวดล้อมรู้วิธีสร้างวัตถุที่เฉพาะเจาะจงกับสภาพแวดล้อมนั้น
คำจำกัดความ: รูปแบบวิธีการโรงงานกำหนดอินเทอร์เฟซสำหรับการสร้างวัตถุ แต่ให้คลาสย่อยตัดสินใจว่าคลาสใดที่จะยกตัวอย่าง รูปแบบนี้มอบหมายความรับผิดชอบของการสร้างอินสแตนซ์ของวัตถุให้กับคลาสย่อยเพื่อส่งเสริมการมีเพศสัมพันธ์แบบหลวม
ตัวอย่างการใช้งาน: แอปพลิเคชันการจัดการเอกสารสามารถใช้วิธีการโรงงานเพื่อสร้างเอกสารประเภทต่าง ๆ (ข้อความ, แผนภูมิ, งานนำเสนอ) เอกสารแต่ละประเภทจะมีคลาสคอนกรีตและวิธีการโรงงานในคลาสฐานจะตัดสินใจว่าเอกสารใดที่จะสร้างขึ้นอยู่กับการป้อนข้อมูลของผู้ใช้ดังนั้นการแยกรหัสไคลเอ็นต์ออกจากคลาสเอกสารคอนกรีต
คำจำกัดความ: รูปแบบตัวสร้างแยกการสร้างวัตถุที่ซับซ้อนออกจากการเป็นตัวแทนทำให้การก่อสร้างเดียวกันสำหรับการเป็นตัวแทนที่แตกต่างกัน รูปแบบนี้มีประโยชน์เมื่อต้องสร้างวัตถุในหลายขั้นตอนและกระบวนการก่อสร้างจะต้องเหมือนกันสำหรับการเป็นตัวแทนที่แตกต่างกัน
ตัวอย่างการใช้งาน: พิจารณาตัวสร้างรถยนต์ที่สามารถสร้างรถยนต์ประเภทต่าง ๆ (กีฬา, SUV, เปิดประทุน) การใช้ตัวสร้างกระบวนการก่อสร้างของรถยนต์เหล่านี้สามารถได้มาตรฐานเป็นขั้นตอนที่แตกต่างกัน (การสร้างแชสซีเครื่องยนต์การตกแต่งภายใน) ในขณะที่รายละเอียดเฉพาะของรถแต่ละประเภทได้รับการจัดการผ่านผู้สร้างคอนกรีตที่แตกต่างกัน
คำจำกัดความ: รูปแบบห่วงโซ่ความรับผิดชอบอนุญาตให้ส่งคำขอไปตามห่วงโซ่ของตัวจัดการ ตัวจัดการแต่ละคนตัดสินใจว่าจะดำเนินการตามคำขอหรือส่งผ่านไปยังตัวจัดการถัดไปในห่วงโซ่
ตัวอย่างการใช้งาน: ในระบบช่วยเหลือคำขอสนับสนุนอาจผ่านการสนับสนุนทางเทคนิคในระดับต่าง ๆ แต่ละระดับตรวจสอบคำขอและตัดสินใจว่าสามารถจัดการหรือส่งผ่านไปยังระดับถัดไป สิ่งนี้หลีกเลี่ยงการมีเพศสัมพันธ์กับผู้ส่งคำขอกับตัวรับสัญญาณเฉพาะและแจกจ่ายความรับผิดชอบระหว่างวัตถุที่แตกต่างกัน
คำจำกัดความ: รูปแบบคำสั่งแปลงคำขอเป็นวัตถุอิสระที่มีข้อมูลที่จำเป็นทั้งหมดเพื่อดำเนินการ สิ่งนี้ช่วยให้วิธีการปรับพารามิเตอร์ด้วยคำขอที่แตกต่างกันล่าช้าหรือเข้าคิวการดำเนินการตามคำขอและสนับสนุนการดำเนินการเลิกทำ
ตัวอย่างการใช้งาน: ในแอปพลิเคชันการทำงานอัตโนมัติในบ้านคำสั่งเช่นการเปิด/ปิดไฟหรือการปรับเทอร์โมสตัทสามารถห่อหุ้มในวัตถุคำสั่ง คำสั่งเหล่านี้สามารถส่งโดยอุปกรณ์ต่าง ๆ เช่นสมาร์ทโฟนหรือแท็บเล็ตและสามารถกำหนดเวลาหรือยกเลิกได้ตามต้องการ
คำจำกัดความ: รูปแบบต้นแบบอนุญาตให้คัดลอกวัตถุที่มีอยู่โดยไม่ทำให้รหัสขึ้นอยู่กับคลาสของพวกเขา คลาสต้นแบบแต่ละคลาสใช้อินเตอร์เฟสต้นแบบซึ่งให้วิธีการโคลน
ตัวอย่างการใช้งาน: ในเกมแทนที่จะสร้างวัตถุตั้งแต่เริ่มต้นทุกครั้งในฉากวัตถุ 'ต้นแบบ' สามารถโคลนเพื่อสร้างสำเนาที่เหมือนกัน สิ่งนี้มีประโยชน์อย่างยิ่งในสถานการณ์การเล่นเกมที่การสร้างและทำลายวัตถุที่คล้ายกันจำนวนมากสามารถใช้งานได้มาก
คำจำกัดความ: รูปแบบของ Memento อนุญาตให้ประหยัดและกู้คืนสถานะก่อนหน้าของวัตถุโดยไม่เปิดเผยรายละเอียดของการใช้งานภายใน รูปแบบนี้มีประโยชน์สำหรับการใช้คุณสมบัติเช่น UNDO ในแอปพลิเคชันที่ต้องการความสามารถในการเปลี่ยนกลับไปยังสถานะก่อนหน้า
ตัวอย่างการใช้งาน: ลองนึกภาพการพัฒนาตัวแก้ไขข้อความที่ช่วยให้ผู้ใช้สามารถยกเลิกการเปลี่ยนแปลงข้อความ ทุกครั้งที่มีการแก้ไขอย่างมีนัยสำคัญสถานะของบรรณาธิการจะถูกบันทึกไว้ในวัตถุของที่ระลึก หากผู้ใช้ต้องการยกเลิกการเปลี่ยนแปลงตัวแก้ไขสามารถกู้คืนสถานะจากหนึ่งในวัตถุของที่ระลึกเหล่านี้กลับข้อความกลับสู่สถานะก่อนหน้า
คำจำกัดความ: รูปแบบสื่อกลางกำหนดวัตถุที่รวมศูนย์การสื่อสารที่ซับซ้อนและการพึ่งพาระหว่างวัตถุที่เชื่อมต่อส่งเสริมการมีเพศสัมพันธ์แบบหลวมและป้องกันวัตถุจากการอ้างอิงโดยตรง สิ่งนี้ช่วยให้การจัดการที่ซับซ้อนได้ดีขึ้นและปรับปรุงการบำรุงรักษาโค้ด
ตัวอย่างการใช้งาน: พิจารณาแอปพลิเคชั่นควบคุมการจราจรทางอากาศ แทนที่จะอนุญาตให้เครื่องบินแต่ละลำสื่อสารโดยตรงกับระบบอื่น ๆ ทั้งหมด (สร้างระบบที่ซับซ้อนมาก) ผู้ไกล่เกลี่ย - ในกรณีนี้หอควบคุม - จัดการการสื่อสารทั้งหมด เครื่องบินสื่อสารกับหอควบคุมเท่านั้นซึ่งจะนำการกระทำของเครื่องบินแต่ละลำเช่นเวลาและสถานที่ที่จะลงจอด
คำจำกัดความ: รูปแบบวิธีการเทมเพลตกำหนดโครงกระดูกของอัลกอริทึมในวิธีการเลื่อนขั้นตอนบางขั้นตอนที่จะดำเนินการโดยคลาสย่อย สิ่งนี้ช่วยให้นิยามใหม่ขั้นตอนของอัลกอริทึมโดยไม่ต้องเปลี่ยนโครงสร้างของอัลกอริทึม
ตัวอย่างการใช้งาน: คิดถึงกรอบการทดสอบอัตโนมัติ วิธีการเทมเพลตสามารถใช้เพื่อกำหนดโครงสร้างการทดสอบมาตรฐานโดยที่วิธีการเทมเพลตจะกำหนดโฟลว์การดำเนินการทดสอบ (การตั้งค่าการดำเนินการการล้างข้อมูล) คลาสย่อยการทดสอบที่เฉพาะเจาะจงสามารถปรับแต่งแต่ละขั้นตอนโดยใช้วิธีการสำหรับการตั้งค่าการดำเนินการทดสอบจริงและการดำเนินการทำความสะอาดหลังการทดสอบ
คำจำกัดความ: รูปแบบผู้สังเกตการณ์จะสร้างความสัมพันธ์แบบหนึ่งต่อหลาย ๆ ระหว่างวัตถุเพื่อให้เมื่อวัตถุหนึ่งเปลี่ยนสถานะผู้อยู่ในนั้นจะได้รับแจ้งและอัปเดตโดยอัตโนมัติ รูปแบบนี้มีประโยชน์อย่างยิ่งสำหรับการใช้ระบบการแจ้งเตือนเหตุการณ์แบบกระจายซึ่งการเปลี่ยนแปลงสถานะหนึ่งจะต้องสะท้อนให้เห็นในเวลาจริงในระบบหรือส่วนประกอบอื่น ๆ
ตัวอย่างการใช้งาน: พิจารณาระบบการจัดการสภาพภูมิอากาศในอาคารอัจฉริยะ เซ็นเซอร์อุณหภูมิ (ผู้เผยแพร่) ตรวจสอบสภาพแวดล้อมอย่างต่อเนื่องและในกรณีที่มีการเปลี่ยนแปลงอย่างมีนัยสำคัญส่งการอัปเดตไปยังอุปกรณ์ต่าง ๆ (ผู้สังเกตการณ์) เช่นเครื่องปรับอากาศและระบบทำความร้อนซึ่งปรับตามลำดับเพื่อรักษาอุณหภูมิที่เหมาะสม ด้วยวิธีนี้ระบบควบคุมสภาพอากาศสามารถตอบสนองต่อสภาพแวดล้อมแบบไดนามิกโดยไม่ต้องแทรกแซงมนุษย์โดยตรงเพื่อให้มั่นใจถึงความสะดวกสบายและประสิทธิภาพการใช้พลังงาน
คำจำกัดความ: รูปแบบสถานะอนุญาตให้วัตถุเปลี่ยนพฤติกรรมเมื่อสถานะภายในเปลี่ยนแปลง จะปรากฏขึ้นราวกับว่าวัตถุกำลังเปลี่ยนคลาส รูปแบบนี้มีประโยชน์สำหรับการจัดการสถานการณ์การเปลี่ยนแปลงสถานะที่ซับซ้อนลดความจำเป็นในการแยกเงื่อนไข (if-else หรือ switch) ภายในรหัส
ตัวอย่างการใช้งาน: ลองนึกภาพการพัฒนาแอปพลิเคชันเพื่อจัดการวงจรชีวิตของคำสั่งซื้อออนไลน์ คำสั่งซื้อสามารถอยู่ในรัฐต่าง ๆ เช่น "การประมวลผล" "จัดส่ง" "ส่งมอบ" การใช้รูปแบบสถานะคุณสามารถกำหนดคลาส ederstate ที่เป็นนามธรรมด้วยวิธีการเช่น process (), ship () และส่งมอบ () แต่ละสถานะคอนกรีต (เช่นการประมวลผล, การจัดส่ง, ส่ง, ส่งมอบ) จะใช้วิธีการเหล่านี้เพื่อจัดการการเปลี่ยนสถานะอย่างเหมาะสม บริบท (เช่นคลาสคำสั่งซื้อ) ยังคงอ้างอิงถึงสถานะปัจจุบันและมอบหมายการดำเนินงานของรัฐไปยังวัตถุสถานะที่เป็นรูปธรรมดังนั้นจึงช่วยให้พฤติกรรมของคำสั่งเปลี่ยนไปตามสถานะปัจจุบันโดยไม่ต้องแทรกแซงโดยตรงจากรหัสลูกค้า
คำจำกัดความ: รูปแบบกลยุทธ์เป็นรูปแบบพฤติกรรมที่อนุญาตให้กำหนดตระกูลอัลกอริทึมห่อหุ้มพวกเขาในชั้นเรียนเฉพาะและทำให้วัตถุที่ใช้แทนกันได้ภายในบริบทนั้น วิธีการนี้ช่วยให้อัลกอริทึมที่แตกต่างกันเป็นอิสระจากลูกค้าโดยใช้พวกเขา
ตัวอย่างการใช้งาน: ลองนึกภาพแอปพลิเคชันอีคอมเมิร์ซที่จำเป็นต้องใช้กลยุทธ์การคำนวณภาษีที่แตกต่างกันขึ้นอยู่กับประเทศของลูกค้า ด้วยรูปแบบกลยุทธ์คุณสามารถกำหนดอินเทอร์เฟซ Taxstrategy ด้วยวิธีการ calculatetax () จากนั้นใช้กลยุทธ์ที่เป็นรูปธรรมต่าง ๆ สำหรับบริบทภาษีที่แตกต่างกันเช่น Ustaxstrategy, Eutaxstrategy และ Asiataxstrategy
คำจำกัดความ: รูปแบบตัววนซ้ำมีวิธีในการเข้าถึงองค์ประกอบของวัตถุรวมตามลำดับโดยไม่เปิดเผยการเป็นตัวแทนพื้นฐาน รูปแบบนี้มีประโยชน์อย่างยิ่งสำหรับการจัดการโหมดการสำรวจที่แตกต่างกันของคอลเลกชัน
ตัวอย่างการใช้งาน: พิจารณาการรวบรวมข้อมูลเช่นต้นไม้หรือกราฟ การใช้รูปแบบตัววนซ้ำคุณสามารถให้การเข้าถึงองค์ประกอบของโครงสร้างข้อมูลที่ซับซ้อนเหล่านี้อย่างสม่ำเสมอโดยไม่ต้องใช้รหัสไคลเอนต์ที่ต้องจัดการกับความแตกต่างระหว่างโครงสร้างต่าง ๆ ตัวอย่างเช่นคุณอาจมีตัววนซ้ำที่แตกต่างกันเช่น depthfirstiterator และ breadthfirstiterator เพื่อสำรวจกราฟ
คำจำกัดความ: รูปแบบของผู้เยี่ยมชมอนุญาตให้แยกอัลกอริทึมออกจากโครงสร้างของวัตถุที่ทำงาน รูปแบบนี้ให้วิธีการเพิ่มการดำเนินการใหม่ในคลาสที่มีอยู่โดยไม่ต้องแก้ไข
ตัวอย่างการใช้งาน: ลองนึกภาพว่ามีระบบการจัดการลูกค้าในบริบทการประกัน รูปแบบของผู้เข้าชมอนุญาตให้วัตถุสำรวจรายชื่อลูกค้าและส่งข้อความส่วนตัวเกี่ยวกับการประกันภัย
คำจำกัดความ: รูปแบบอะแดปเตอร์ช่วยให้อินเทอร์เฟซที่เข้ากันไม่ได้ทำงานร่วมกัน มันทำหน้าที่เป็นสะพานเชื่อมระหว่างอินเทอร์เฟซที่เข้ากันไม่ได้สองตัวโดยการเปลี่ยนอินเทอร์เฟซของคลาสที่มีอยู่เป็นอินเทอร์เฟซอื่นที่ลูกค้าคาดหวัง
ตัวอย่างการใช้งาน: สมมติว่าคุณมีอินเทอร์เฟซใหม่สำหรับการเรนเดอร์ชาร์ต แต่ไลบรารีที่มีอยู่มีฟังก์ชั่นที่คล้ายกันกับอินเทอร์เฟซที่แตกต่างกัน แทนที่จะเขียนไลบรารีที่มีอยู่ใหม่คุณสามารถใช้อะแดปเตอร์เพื่อให้ไลบรารีที่มีอยู่ทำงานกับอินเทอร์เฟซการเรนเดอร์ใหม่ซึ่งทำให้การรวมไร้รอยต่อ
คำจำกัดความ: รูปแบบบริดจ์เป็นรูปแบบโครงสร้างที่แยกสิ่งที่เป็นนามธรรมออกจากการใช้งานทำให้พวกเขาสามารถแตกต่างกันได้อย่างอิสระ มันถูกใช้เพื่อแบ่งชั้นเรียนขนาดใหญ่หรือชุดของคลาสที่เกี่ยวข้องอย่างใกล้ชิดเป็นสองลำดับชั้นแยกต่างหาก - นามธรรมและการใช้งาน - ที่สามารถพัฒนาและปรับเปลี่ยนได้อย่างอิสระ
ตัวอย่างการใช้งาน: ในแอปพลิเคชั่นการจัดส่งพิซซ่ามีพิซซ่าประเภทต่าง ๆ ที่มีให้เลือกแต่ละชนิดมีรสนิยมที่เป็นเอกลักษณ์และร้านอาหารประเภทต่าง ๆ ที่มีสไตล์การทำอาหารที่แตกต่างกัน เมื่อมีการวางคำสั่งซื้อพิซซ่าแอปพลิเคชันจะใช้รูปแบบบริดจ์เพื่อให้แน่ใจว่าพิซซ่าถูกแต่งขึ้นตามความชอบของลูกค้าและปรุงตามสไตล์เฉพาะของร้านอาหารที่เลือก ด้วยวิธีนี้รูปแบบบริดจ์อำนวยความสะดวกในการรวมกันระหว่างพิซซ่าประเภทต่าง ๆ และรูปแบบการทำอาหารที่หลากหลายของร้านอาหารช่วยให้การจัดส่งที่มีประสิทธิภาพและเป็นส่วนตัว
คำจำกัดความ: รูปแบบคอมโพสิตเป็นรูปแบบโครงสร้างที่ช่วยให้การรักษากลุ่มของวัตถุและวัตถุแต่ละชิ้นอย่างสม่ำเสมอ รูปแบบนี้จัดระเบียบวัตถุเป็นโครงสร้างต้นไม้เพื่อแสดงถึงลำดับชั้นของชิ้นส่วน ช่วยให้ผู้ใช้สามารถทำงานกับวัตถุแต่ละชิ้นและองค์ประกอบของวัตถุได้อย่างสม่ำเสมอ
ตัวอย่างการใช้งาน: ลองนึกภาพว่ามีระบบการจัดการกล่องของขวัญที่มีแต่ละรายการและกล่องอื่น ๆ ลูกค้าสร้างกล่องหลักและเพิ่มบางรายการเช่นหนังสือและวิดีโอเกมพร้อมกล่องขนาดเล็กที่มีหนังสือ ราคารวมของรายการทั้งหมดภายในกล่องหลักจะถูกคำนวณ รูปแบบคอมโพสิตช่วยให้การรักษาวัตถุแต่ละชิ้นและการจัดองค์ประกอบวัตถุในลักษณะเดียวกันทำให้โค้ดง่ายขึ้นและทำให้การดำเนินงานมีความสม่ำเสมอในทั้งวัตถุและกลุ่มวัตถุ
คำจำกัดความ: รูปแบบของมัณฑนากรเป็นรูปแบบโครงสร้างที่ช่วยเพิ่มความรับผิดชอบเพิ่มเติมให้กับวัตถุแบบไดนามิกโดยไม่ต้องเปลี่ยนโครงสร้างผ่านการสืบทอด รูปแบบนี้เป็นทางเลือกที่ยืดหยุ่นในการหาคลาสที่ขยายออกไปเพื่อขยายฟังก์ชันการทำงาน
ตัวอย่างการใช้งาน: ลองนึกภาพว่ามีระบบการแจ้งเตือน รูปแบบของมัณฑนากรอนุญาตให้ขยายฟังก์ชั่นของแพลตฟอร์มโซเชียลต่างๆ ด้วยวิธีนี้การแจ้งเตือนสามารถส่งผ่านช่องทางต่างๆโดยไม่ต้องแก้ไขรหัสโดยตรง
คำจำกัดความ: รูปแบบของหน้าเป็นรูปแบบโครงสร้างที่ให้อินเทอร์เฟซแบบครบวงจรกับชุดของอินเทอร์เฟซในระบบย่อย รูปแบบนี้กำหนดอินเทอร์เฟซระดับสูงที่ทำให้ระบบย่อยใช้งานง่ายขึ้น
ตัวอย่างการใช้งาน: พิจารณาระบบที่ซับซ้อนสำหรับการจัดการอุปกรณ์มัลติมีเดียในรถยนต์ซึ่งรวมถึงระบบย่อยสำหรับการเชื่อมต่อเสียงวิดีโอและบลูทู ธ ด้านหน้าสามารถเสนออินเทอร์เฟซอย่างง่ายเพื่อเริ่มเพลงหยุดวิดีโอหรือจัดการการโทรซ่อนความซับซ้อนและการพึ่งพาระหว่างระบบย่อย
คำจำกัดความ: รูปแบบฟลายเวทเป็นรูปแบบโครงสร้างที่ใช้การแบ่งปันเพื่อรองรับวัตถุที่มีเนื้อละเอียดจำนวนมากอย่างมีประสิทธิภาพ มันมีประโยชน์อย่างยิ่งเมื่อส่วนใหญ่ของสถานะของวัตถุสามารถแบ่งปันและทำให้ภายนอก
ตัวอย่างการใช้งาน: ลองนึกภาพมีแอปพลิเคชันเพื่อจัดการประเภทของหนังสือ มันใช้โรงงานเพื่อสร้างและแบ่งปันอินสแตนซ์ของประเภทหนังสือ ด้วยวิธีนี้หากมีการร้องขอหนังสือประเภทเดียวกันหลายครั้งวัตถุเดียวกันจะถูกส่งคืนแทนที่จะสร้างใหม่ในแต่ละครั้ง สิ่งนี้จะช่วยประหยัดหน่วยความจำและปรับปรุงประสิทธิภาพโดยรวมของแอปพลิเคชัน
คำจำกัดความ: รูปแบบพร็อกซีจัดเตรียมตัวแทนหรือตัวยึดตำแหน่งสำหรับวัตถุอื่นเพื่อควบคุมการเข้าถึงมัน รูปแบบนี้ใช้เมื่อคุณต้องการกำหนดข้อ จำกัด ในการเข้าถึงวัตถุการโหลดขี้เกียจหรือเพื่อให้การแปลวัตถุที่โปร่งใสในสภาพแวดล้อมแบบกระจาย
ตัวอย่างการใช้งาน: ในการควบคุมการเข้าถึงระบบไฟล์พร็อกซีสามารถใช้เพื่อควบคุมการดำเนินการของผู้ใช้ในไฟล์ พร็อกซีตรวจสอบข้อมูลรับรองของผู้ใช้ก่อนที่จะอนุญาตให้เข้าถึงไฟล์จริงให้ความปลอดภัยเพิ่มเติม
คำจำกัดความ: รูปแบบ Singleton เป็นรูปแบบการสร้างสรรค์ที่ทำให้มั่นใจได้ว่าชั้นเรียนมีเพียงหนึ่งอินสแตนซ์ในขณะที่ให้จุดเชื่อมต่อทั่วโลกสำหรับอินสแตนซ์นี้
ตัวอย่างการใช้งาน: ในแอปพลิเคชันรูปแบบ Singleton สามารถใช้ในการจัดการการกำหนดค่าของแอปพลิเคชัน วัตถุซิงเกิลสามารถมีการกำหนดค่าทั้งหมดที่คงที่ในระหว่างการดำเนินการของแอปพลิเคชันและสามารถอ่านได้จากส่วนต่าง ๆ ของโปรแกรม