JavaRush /จาวาบล็อก /Random-TH /ตัวดัดแปลงหรือวิธีการร่ายมนตร์ในโลก Java
Petr Gorskin
ระดับ
Москва

ตัวดัดแปลงหรือวิธีการร่ายมนตร์ในโลก Java

เผยแพร่ในกลุ่ม
สวัสดีวันกาแล็กซี่สหาย! นี่เป็นต้นฉบับเกี่ยวกับดาวเคราะห์ดวงแรกของฉัน และเนื่องจากฉันเป็นวิศวกร การตีความแนวคิดบางอย่างจึงสามารถทำได้ในภาษานอกโลก
ตัวดัดแปลงหรือวิธีการร่ายมนตร์ในโลก Java - 1
บทนำ ในความคิดของฉัน Java เปรียบเสมือนทางเดินที่มีประตูไม่มีที่สิ้นสุด (แพ็คเกจ) ด้านหลังประตูแต่ละบานมีพื้นที่ว่างและตู้เก็บเอกสารซึ่งจัดเก็บภูเขาม้วนเวทย์มนตร์พร้อมคำแนะนำ (คลาส) ในการสร้างวัตถุ แต่ละม้วนจะอธิบายชุดของคุณลักษณะ (ตัวแปร) และความสามารถ (วิธีการ) - การกระทำ (ฟิลด์) ที่ทำกับคลาสเองหรือวัตถุที่ประกอบขึ้นบนพื้นฐานของมัน ในขั้นตอนนี้ ลองจินตนาการว่าเราเป็นพ่อมด และพยายามสร้างคำสั่ง (คลาส) ใหม่ทั้งหมด ดังนั้น: ตัวดัดแปลงหรือวิธีการร่ายมนตร์ในโลก Java - 2มาดื่มน้ำอมฤตแห่งปัญญา (เรียนรู้พื้นฐาน) และเริ่มเขียนคำแนะนำกันดีกว่า ตัวดัดแปลงการเข้าถึงและไม่เข้าถึง ลองจินตนาการว่าคำสั่งใด ๆ และวัตถุที่สร้างขึ้นบนพื้นฐานของมันตลอดจนคุณลักษณะและความสามารถของมันนั้นจะถูกอาคมอย่างน่าอัศจรรย์ในขั้นต้นนั่นคือ พวกเขาจะได้รับชุดตัวแก้ไขเฉพาะ เรามาลองสร้างคำแนะนำเกี่ยวกับการร่ายมนตร์ที่เป็นไปได้กันดีกว่า
  1. จำเป็นต้องมี ตัวแก้ไขการเข้าถึงซึ่งอธิบายการเข้าถึงของคลาส วัตถุ หรือฟิลด์: ในกรณีที่ไม่มี JVM (นี่คือแหล่งที่มาของเวทมนตร์สากล) จะกำหนดตัวระบุเริ่มต้นให้กับแพ็คเกจโดยอัตโนมัติ

    เริ่มจากตัวแก้ไขตัวที่สอง จะมีตัวแก้ไขที่ไม่สามารถเข้าถึงได้ ซึ่งไม่ได้บังคับและยังสามารถขัดแย้งกันเองได้ (แต่สิ่งแรกต้องมาก่อน)

  2. ตัวแก้ไขแบบคงที่บ่งชี้ว่าคลาส วัตถุ หรือฟิลด์เป็นแบบคงที่ แต่มันหมายความว่าอะไร? โดยพื้นฐานแล้วเราจะลองทำในสนาม

    ตัวแปรแบบคงที่เรียกว่าตัวแปรคลาสและเป็นตัวแปรเฉพาะสำหรับอินสแตนซ์ทั้งหมดของคลาสนั้น สามารถเรียกใช้เมธอดแบบคงที่ได้โดยไม่ต้องสร้างอ็อบเจ็กต์ที่มีการประกาศ คลาสแบบคงที่ถูกใช้เมื่อซ้อนคลาสหนึ่งไปยังอีกคลาสหนึ่ง และหลักการของการโต้ตอบระหว่างคลาสภายในและคลาสภายนอกนั้นคล้ายคลึงกับวิธีการ (นี่คือหัวข้อสำหรับการอภิปรายแยกต่างหาก) ยังสามารถใช้เป็นบล็อกแยกต่างหากภายในวัตถุได้

  3. ตัวแก้ไขFinal บ่ง ชี้ให้ตัวแปรทราบได้อย่างมีประสิทธิภาพว่าเป็นค่าคงที่ สำหรับเมธอด - ไม่สามารถแทนที่เมธอดเหล่านั้นได้ในระหว่างการสืบทอด แต่สำหรับคลาส นี่เป็นข้อบ่งชี้ว่าไม่สามารถสืบทอดจากเมธอดได้ (ไม่เปลี่ยนรูป)

    ตัวแก้ไขแบบคงที่และแบบสุดท้ายใช้กับคลาส อ็อบเจ็กต์ และฟิลด์ อย่างไรก็ตาม มีตัวดัดแปลงที่ใช้กับบางส่วนเท่านั้น (หรือแม้แต่บางส่วน เนื่องจากทั้งตัวแปรและวิธีการเป็นฟิลด์ แต่ไม่ใช่ว่าตัวดัดแปลงทั้งหมดจะใช้กับทั้งสองอย่าง) หากเราวาดการเปรียบเทียบ มีเพียงรองเท้าบูทและถุงมือเท่านั้นที่สามารถร่ายมนตร์เพื่อความเร็วได้ (เพื่อให้มันเคลื่อนที่เร็วขึ้น) แต่การร่ายมนตร์หมวกเพื่อความเร็วนั้นไร้จุดหมาย (และ Universal Supervisory Council (คอมไพเลอร์) จะไม่อนุญาตให้ทำ)

  4. ตัวแก้ไขAbstract ใช้กับเมธอดและคลาสเท่านั้น วิธีนามธรรมคือวิธีการที่ไม่มีการดำเนินการ (เนื้อหา)

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

เมื่อทำงานในสภาพแวดล้อมแบบมัลติเธรด สามารถใช้ตัวแก้ไขพิเศษได้:
  1. ตัวแก้ไขแบบซิงโครไนซ์ ใช้สำหรับวิธีการเท่านั้น การมีอยู่บ่งชี้ว่ามีเพียงเธรดเดียวเท่านั้นที่สามารถดำเนินการได้ในแต่ละครั้ง ยังสามารถใช้เป็นบล็อกแยกต่างหากของโค้ดภายในออบเจ็กต์ (ระบุออบเจ็กต์การซิงโครไนซ์)

  2. ตัวแก้ไขระเหย - สำหรับตัวแปรเท่านั้น ขอแนะนำให้ใช้สำหรับตัวแปรที่สามารถใช้งานได้พร้อมกันหลายเธรด ตัวแปรที่มีตัวปรับแต่งดังกล่าวจะถูกคัดลอกทันทีจากแคชของโปรเซสเซอร์ไปยังหน่วยความจำหลักทุกครั้งที่มีการเปลี่ยนแปลง ทำให้เธรดแบบขนานสามารถรับค่าล่าสุดได้

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

  3. ตัวแก้ไขชั่วคราวสำหรับตัวแปรเท่านั้น ตัวปรับแต่งนี้ทำเครื่องหมายตัวแปรที่ต้องข้ามเมื่อทำให้วัตถุเป็นอนุกรม (นี่เป็นกระบวนการที่ชาญฉลาด โดยหลักการแล้ว คุณสามารถอ่านเกี่ยวกับมันได้ด้วยตัวเอง...)*

    * - ฉันเขียนบทความนี้ที่ระดับ 17 และจนถึงตอนนั้นยังไม่ได้อธิบายการทำให้เป็นอนุกรมเนื่องจากกระบวนการยังไม่ได้รับการอธิบาย ดังนั้นแทนที่จะคัดลอกและวาง ฉันขอแนะนำให้คุณศึกษาด้วยตนเองหากจำเป็น

คู่โมดิฟายเออร์ที่ขัดแย้งกัน นอกเหนือจากการบังคับใช้โมดิฟายเออร์กับคลาส อ็อบเจ็กต์ และฟิลด์ต่างๆ แล้ว ยังมีแนวคิดของคู่ที่ขัดแย้งกันอีกด้วย สมมติว่าการร่ายมนตร์หมวกกันน็อคด้วยความแข็งแกร่งทำให้มันหนัก และในขณะเดียวกันคุณก็ต้องการที่จะร่ายมนตร์ให้มีน้ำหนักเบา อันหนึ่งไม่พอดีกับอันอื่น
  1. สุดท้ายและผันผวน - เมื่อพูดถึงตัวแปร เราไม่สามารถพูดพร้อมๆ กันได้ว่ามันเป็นครั้งสุดท้าย (คงที่) และหลายเธรดมีความสามารถในการเปลี่ยนแปลง... ท้ายที่สุดแล้ว ค่าคงที่ และเมื่อใดก็ตาม เธรดก็สามารถอ่านได้ แต่ไม่มีเธรดเดียวที่สามารถเปลี่ยนค่าคงที่ได้ (Universal Supervisory Council จะไม่อนุญาต)
  2. ขั้นสุดท้ายและบทคัดย่อ - คลาสและวิธีการไม่สามารถเป็นทั้งนามธรรมได้ (ซึ่งโดยส่วนใหญ่แสดงถึงความจำเป็นในการชี้แจงให้ชัดเจนสำหรับการนำไปปฏิบัติ) และขั้นสุดท้าย เช่น ไม่เปลี่ยนรูป ปรากฎว่าคำแนะนำระบุวิธีสร้างหมวกกันน็อคที่ดีทนทานจากวัสดุใด ๆ (ส่วนนามธรรม) แต่ในกรณีนี้จะต้องไม่มีรูในนั้น (ส่วนบังคับสุดท้ายไม่สามารถเปลี่ยนได้)
  3. นามธรรมและคงที่ - วิธีนามธรรมไม่สามารถคงที่หรือซิงโครไนซ์ในเวลาเดียวกันได้ วิธีการนามธรรมแบบคงที่ไม่สมเหตุสมผลเพราะไม่เพียงแต่ไม่ได้ทำอะไรเลย แต่ยังเป็นของทั้งคลาสด้วย - ผลลัพธ์คือสิ่งที่ไร้ประโยชน์
  4. นามธรรมและซิงโครไนซ์ - อะไรคือจุดสำคัญของการซิงโครไนซ์งานกับวิธีการที่ไม่ทำอะไรเลย?
สรุปแล้ว คำอธิบายของตัวดัดแปลงจบลงแล้วข้อขัดแย้งทั้งหมดได้ถูกแยกออกแล้วและตอนนี้คุณสามารถรวมผลลัพธ์ด้วยแผ่นโกง - แผนภาพเสน่ห์: ตัวดัดแปลงหรือวิธีการร่ายมนตร์ในโลกของ Java - 3โดยสรุปฉันอยากจะบอกว่าการเขียนบทความนี้เป็นการตระหนักถึงความปรารถนาของฉัน เพื่อศึกษาตัวดัดแปลง ประสบการณ์จะประสบความสำเร็จหรือไม่นั้นขึ้นอยู่กับคุณในการตัดสิน ฉันกำลังรอคำแนะนำของคุณในการปรับปรุง/แก้ไข และบางที เราจะทำให้คู่มือนี้กลายเป็นคู่มือที่มีประโยชน์มากสำหรับผู้เล่น Java มือใหม่
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION