
ลวดลาย
คอลเลกชันที่รวบรวมไว้ของรูปแบบการออกแบบและแอปพลิเคชันสำหรับภาษา GO
ส้อมของ TMRTS/go-patterns แต่รวมเข้ากับส้อมที่ยอดเยี่ยมอื่น ๆ สามารถไปกับรูปแบบในตัวอย่างได้
repos ที่รวมกัน
- ผสาน: https://github.com/nynicg/go-patterns
- ผสาน: https://github.com/weichou1229/go-patterns
- ผสาน: https://github.com/jianhan/go-patterns
- ผสาน: https://github.com/sakari-ai/go-patterns
- ผสาน: https: //github.com/restudy/go-patterns
รูปแบบการสร้างสรรค์
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| โรงงานนามธรรม | จัดเตรียมอินเทอร์เฟซสำหรับการสร้างครอบครัวของวัตถุที่เก็บอยู่ | |
| ผู้สร้าง | สร้างวัตถุที่ซับซ้อนโดยใช้วัตถุง่ายๆ | |
| วิธีโรงงาน | defers การสร้างอินสแตนซ์ของวัตถุไปยังฟังก์ชั่นพิเศษสำหรับการสร้างอินสแตนซ์ | |
| พูลวัตถุ | อินสแตนซ์อินสแตนซ์และรักษากลุ่มวัตถุอินสแตนซ์ประเภทเดียวกัน | |
| ซิงเกิลตัน | จำกัด การสร้างอินสแตนซ์ของประเภทเป็นหนึ่งวัตถุ | |
รูปแบบโครงสร้าง
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| สะพาน | แยกอินเทอร์เฟซจากการใช้งานเพื่อให้ทั้งสองสามารถแตกต่างกันได้อย่างอิสระ | |
| รวมกัน | ห่อหุ้มและให้การเข้าถึงวัตถุต่าง ๆ จำนวนมาก | |
| มัณฑนากร | เพิ่มพฤติกรรมให้กับวัตถุแบบคงที่หรือแบบไดนามิก | |
| ด้านหน้า | ใช้ประเภทหนึ่งเป็น API สำหรับคนอื่น ๆ | |
| ฟลายเวท | นำอินสแตนซ์ที่มีอยู่ของวัตถุที่มีสถานะคล้ายกัน/เหมือนกันเพื่อลดการใช้ทรัพยากร | |
| พร็อกซี | จัดเตรียมตัวแทนสำหรับวัตถุเพื่อควบคุมการกระทำของมัน | |
| อะแดปเตอร์ | จัดเตรียมตัวแทนสำหรับวัตถุเพื่อควบคุมการกระทำของมัน | |
รูปแบบพฤติกรรม
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| ห่วงโซ่ความรับผิดชอบ | หลีกเลี่ยงการมีเพศสัมพันธ์กับผู้ส่งไปยังผู้รับโดยให้โอกาสมากกว่าวัตถุในการจัดการคำขอ | |
| สั่งการ | รวมคำสั่งและอาร์กิวเมนต์ให้โทรในภายหลัง | |
| ผู้ไกล่เกลี่ย | เชื่อมต่อวัตถุและทำหน้าที่เป็นพร็อกซี | |
| ของที่ระลึก | สร้างโทเค็นทึบแสงที่สามารถใช้เพื่อกลับไปสู่สถานะก่อนหน้า | |
| ผู้สังเกตการณ์ | ให้การโทรกลับสำหรับการแจ้งเตือนเหตุการณ์/การเปลี่ยนแปลงข้อมูล | |
| การลงทะเบียน | ติดตามคลาสย่อยทั้งหมดของคลาสที่กำหนด | |
| สถานะ | ห่อหุ้มพฤติกรรมที่แตกต่างกันสำหรับวัตถุเดียวกันตามสถานะภายในของมัน | |
| กลยุทธ์ | เปิดใช้งานพฤติกรรมของอัลกอริทึมที่จะเลือกเมื่อรันไทม์ | |
| เทมเพลต | กำหนดคลาสโครงกระดูกซึ่งป้องกันวิธีการบางอย่างในคลาสย่อย | |
| ผู้มาเยือน | แยกอัลกอริทึมออกจากวัตถุที่ทำงาน | |
| ล่าม | ตีความภาษาของคุณเองหรือคำสั่งที่แต่งขึ้น | |
รูปแบบการซิงโครไนซ์
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| ตัวแปรเงื่อนไข | ให้กลไกสำหรับเธรดเพื่อให้เข้าถึงชั่วคราวเพื่อรอเงื่อนไขบางอย่าง | |
| ล็อค/mutex | บังคับใช้ขีด จำกัด การยกเว้นซึ่งกันและกันในทรัพยากรเพื่อให้ได้การเข้าถึงแบบเอกสิทธิ์เฉพาะบุคคล | |
| เฝ้าสังเกต | การรวมกันของรูปแบบตัวแปร mutex และเงื่อนไข | |
| READ-WRITE LOCK | อนุญาตให้เข้าถึงการอ่านแบบขนาน แต่การเข้าถึงแบบพิเศษในการดำเนินการเขียนไปยังทรัพยากร | |
| สัญญาณ | อนุญาตให้ควบคุมการเข้าถึงทรัพยากรทั่วไป | |
รูปแบบพร้อมกัน
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| N-Barrier | ป้องกันไม่ให้กระบวนการดำเนินการจนกว่ากระบวนการ N ทั้งหมดจะไปถึงอุปสรรค | |
| การขนานกัน | เสร็จสิ้นงานอิสระจำนวนมากพร้อมขีด จำกัด ทรัพยากร | |
| ออกอากาศ | โอนข้อความไปยังผู้รับทั้งหมดพร้อมกัน | |
| coroutines | รูทีนย่อยที่อนุญาตให้ระงับและดำเนินการดำเนินการต่อในบางสถานที่ | |
| เครื่องกำเนิดไฟฟ้า | ให้ลำดับของค่าทีละครั้ง | |
| เครื่องปฏิกรณ์ | คำขอบริการ demultiplexes ส่งมอบพร้อมกันไปยังตัวจัดการบริการและส่งพวกเขาไปยังตัวจัดการคำขอที่เกี่ยวข้อง | |
| การขนานกัน | เสร็จสิ้นงานอิสระจำนวนมาก | |
| ผู้ผลิตผู้ผลิต | แยกงานออกจากการประหารชีวิต | |
รูปแบบการส่งข้อความ
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| พัดลม | Funnels Tasks ไปยังอ่างล้างมือ (เช่นเซิร์ฟเวอร์) | |
| แฟน ๆ | จัดจำหน่ายงานระหว่างคนงาน (เช่นผู้ผลิต) | |
| อนาคตและสัญญา | ทำหน้าที่เป็นผู้ถือสถานที่ของผลลัพธ์ที่ไม่เป็นที่รู้จักในขั้นต้นสำหรับวัตถุประสงค์ในการซิงโครไนซ์ | |
| เผยแพร่/สมัครสมาชิก | ส่งผ่านข้อมูลไปยังคอลเลกชันของผู้รับที่สมัครรับหัวข้อ | |
| ดันและดึง | กระจายข้อความไปยังคนงานหลายคนจัดเรียงในท่อ | |
รูปแบบความมั่นคง
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| กำแพงกั้น | บังคับใช้หลักการของการควบคุมความล้มเหลว (เช่นป้องกันการล้มเหลวแบบเรียงซ้อน) | |
| เครื่องทำลายวงจร | หยุดการไหลของคำขอเมื่อคำขอมีแนวโน้มที่จะล้มเหลว | |
| เส้นตาย | อนุญาตให้ลูกค้าหยุดรอการตอบกลับเมื่อความน่าจะเป็นของการตอบสนองต่ำ (เช่นหลังจากรอ 10 วินาทีสำหรับการรีเฟรชหน้า) | |
| ล้มเหลวอย่างรวดเร็ว | ตรวจสอบความพร้อมใช้งานของทรัพยากรที่จำเป็นในช่วงเริ่มต้นของคำขอและล้มเหลวหากข้อกำหนดไม่เป็นที่พอใจ | |
| การจับมือกัน | ถามส่วนประกอบว่าจะต้องโหลดอีกต่อไปหากไม่สามารถปฏิเสธคำขอได้หรือไม่ | |
| สถานะมั่นคง | สำหรับทุกบริการที่สะสมทรัพยากรบริการอื่น ๆ จะต้องรีไซเคิลทรัพยากรนั้น | |
รูปแบบการทำโปรไฟล์
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| ฟังก์ชั่นกำหนดเวลา | ห่อฟังก์ชั่นและบันทึกการดำเนินการ | |
สำนวน
| ลวดลาย | คำอธิบาย | สถานะ |
|---|
| ตัวเลือกการทำงาน | อนุญาตให้สร้าง API ที่สะอาดด้วยค่าเริ่มต้นที่มีสติและการแทนที่สำนวน | |
การต่อต้านรูปแบบ
การใช้งานรูปแบบ
ตัวอย่างของ Go-Pattern