Skip to main content

metaclass คืออะไร?

metaclass ถูกใช้ในการเขียนโปรแกรมเชิงวัตถุ (OOP) และโดยทั่วไปจะคิดว่าเป็นคลาสคลาสเช่นเดียวกับข้อมูลเมตาส่วนใหญ่ metaclass ทำงานอยู่เบื้องหลังโปรแกรมและไม่เคยเห็นโดยผู้ใช้metaclass สามารถแก้ไขข้อมูลจากชั้นเรียนและสามารถเชื่อมโยงกับคลาสหนึ่งหรือหลายคลาสขึ้นอยู่กับโครงสร้างการเข้ารหัสไม่ใช่โครงสร้าง OOP ทั้งหมดที่รวมถึงการเข้ารหัส metaobject และบางอย่างอาจเสนอการเข้ารหัส metaobject ในรูปแบบขั้นสูงเท่านั้น

ในการเข้ารหัสเกือบทุกประเภทการเข้ารหัสเมตาเป็นแท็กหรือบรรทัดของรหัสที่ใช้งานได้ในโปรแกรมผู้ใช้งาน.ข้อมูลเมตาอยู่เหนือรหัสและสามารถแก้ไขชิ้นส่วนของข้อมูลหรือเพิ่มลงในโปรแกรมโดยไม่รบกวนโปรแกรมโดยตรงใน OOP มีการใช้ metaclass ในการเรียนและปรับเปลี่ยนพฤติกรรม

คลาสใน OOP เป็นชุดของอินสแตนซ์หรือวัตถุที่อยู่ภายใต้คำเดียวตัวอย่างเช่นโปรแกรมเมอร์สามารถสร้างชั้นเรียนที่เรียกว่า "บ้าน"ภายใต้สิ่งนี้โปรแกรมเมอร์จะสร้างวัตถุที่แก้ไขหรือทำซ้ำด้านที่พบได้ทั่วไปในบ้านเช่นห้องพักเฟอร์นิเจอร์และผู้คนในขณะที่คลาสสามารถปรับเปลี่ยนวัตถุเหล่านี้ได้ metaclass จะทำงานในการปรับเปลี่ยนคลาสเอง

คลาสใน OOP มักจะไดนามิกและอาจได้รับการเปลี่ยนแปลงมากมายก่อนที่โปรแกรมจะเสร็จสิ้นmetaclasses เป็นชิ้นส่วนของข้อมูลคงที่ที่ไม่ค่อยเปลี่ยนแปลงเว้นแต่โปรแกรมเมอร์พบว่าข้อมูลเมตาทำงานไม่ถูกต้องสิ่งนี้ทำให้ metaclasses ไม่ทำงานโดยไม่ตั้งใจกับข้อมูลที่ผันผวนและยังช่วยให้มั่นใจได้ว่าตัวดัดแปลงพฤติกรรมไม่สามารถจัดการได้

ขึ้นอยู่กับความต้องการของโปรแกรมเมอร์ metaclass จะเชื่อมโยงกับคลาสเดียวหรือหลายคลาสในครั้งเดียวโปรแกรมเมอร์ส่วนใหญ่มักจะเชื่อมต่อ metaclass กับคลาสหนึ่งและเพิ่มกฎหรือพฤติกรรมที่ไม่ซ้ำกันในการเข้ารหัส metaobjectหากมีหลายคลาสที่สามารถผ่านการปรับเปลี่ยนพฤติกรรมเดียวกันข้อมูลเมตาจะถูกนำไปใช้กับคลาสที่แตกต่างกันหลายคลาสสิ่งนี้เป็นไปได้เนื่องจากการเข้ารหัส MetaObject มีชื่อว่าและสามารถเรียกได้ง่ายเมื่อต้องการ

ในขณะที่นี่เป็นเหตุการณ์ที่เกิดขึ้นทั่วไปในโปรแกรมระดับกลางถึงขั้นสูงโครงสร้าง OOP บางอย่างไม่ได้เสนอ metaclassesนี่เป็นเพราะไม่จำเป็นสำหรับพวกเขาหรือมีวัตถุหรือคลาสอื่น ๆ ที่มีฟังก์ชั่นที่คล้ายกัน แต่เรียกว่าอย่างอื่นโครงสร้างการเข้ารหัสบางอย่างอาจเสนอ metaclasses ที่ซับซ้อนและขั้นสูงเท่านั้น