บทสรุปที่พูดเกินจริง(TM)
คุณได้รับบางสิ่ง
- การสืบทอดและการโคลนต้นแบบ
- การเพิ่มคุณสมบัติใหม่แบบไดนามิก
- การมีอยู่ร่วมของวัตถุของรุ่นต่าง ๆ (ระดับสเปค) ของคลาสเดียวกัน
- วัตถุที่เป็นของรุ่นที่ใหม่กว่า (ระดับสเปค) จะมีคุณสมบัติ "ทางเลือก" พิเศษ
- วิปัสสนาของคุณสมบัติเก่าและใหม่
- วิปัสสนาของกฎการตรวจสอบ (กล่าวถึงด้านล่าง)
มีข้อเสียเปรียบอย่างหนึ่ง
- คอมไพเลอร์ไม่ได้ตรวจสอบสตริงที่สะกดผิดสำหรับคุณ
- เครื่องมือการรีแฟคเตอร์อัตโนมัติจะไม่เปลี่ยนชื่อชื่อคีย์คุณสมบัติให้กับคุณ - เว้นแต่คุณจะจ่ายให้กับชื่อแฟนซี
สิ่งคือคุณจะได้รับวิปัสสนาโดยใช้, um, วิปัสสนา นี่คือสิ่งที่มักจะเกิดขึ้น:
- เปิดใช้งานการสะท้อน
- เพิ่มไลบรารี่ขนาดใหญ่ในโครงการของคุณ
- ทำเครื่องหมายวิธีการและคุณสมบัติของวัตถุต่าง ๆ ด้วยคุณลักษณะหรือคำอธิบายประกอบ
- ปล่อยให้ห้องสมุดวิปัสสนาทำเวทมนตร์
กล่าวอีกนัยหนึ่งถ้าคุณไม่จำเป็นต้องเชื่อมต่อกับ FP คุณไม่จำเป็นต้องทำตามคำแนะนำของ Rich Hickey
สุดท้าย แต่ไม่ใช่อย่างน้อยที่สุด (หรือที่สวยที่สุด) ถึงแม้ว่าการใช้String
เป็นคีย์คุณสมบัติจะทำให้คุณใช้งานString
ได้อย่างตรงไปตรงมาที่สุด แต่คุณไม่จำเป็นต้องใช้s ระบบดั้งเดิมจำนวนมากรวมถึง Android ™ใช้ ID จำนวนเต็มผ่านกรอบทั้งหมดเพื่ออ้างถึงคลาสคุณสมบัติทรัพยากรและอื่น ๆ
Android เป็นเครื่องหมายการค้าของ Google Inc.
คุณสามารถทำให้ทั้งสองโลกมีความสุข
สำหรับโลก Java ให้ใช้ getters และ setters ตามปกติ
สำหรับโลก FP ให้ใช้
Object getPropertyByName(String name)
void setPropertyByName(String name, Object value) throws IllegalPropertyChangeException
List<String> getPropertyNames()
Class<?> getPropertyValueClass(String name)
ภายในฟังก์ชั่นเหล่านี้ใช่รหัสน่าเกลียด แต่มีปลั๊กอิน IDE ที่จะเติมให้คุณโดยใช้ ... เอ่อปลั๊กอินอัจฉริยะที่อ่านโค้ดของคุณ
ด้าน Java ของสิ่งต่าง ๆ จะเหมือนกับนักแสดงตามปกติ พวกเขาจะไม่ใช้ส่วนที่น่าเกลียดของรหัส คุณอาจต้องการซ่อนจาก Javadoc
ฝั่ง FP ของโลกสามารถเขียนโค้ด "leet" ที่พวกเขาต้องการและพวกเขามักจะไม่ตะโกนใส่คุณเกี่ยวกับรหัสที่ช้า
โดยทั่วไปการใช้แผนที่ (ถุงทรัพย์สิน) ในสถานที่ของวัตถุเป็นเรื่องธรรมดาในการพัฒนาซอฟต์แวร์ มันไม่ได้เป็นเอกลักษณ์ในการเขียนโปรแกรมการทำงานหรือภาษาเฉพาะบางประเภท มันอาจไม่ใช่วิธีการที่ใช้สำนวนสำหรับภาษาใดก็ตาม แต่มีสถานการณ์ที่เรียกร้องมัน
โดยเฉพาะอย่างยิ่งการซีเรียลไลซ์เซชั่น / การดีซีเรียลไลเซชันมักต้องใช้เทคนิคที่คล้ายกัน
แค่ความคิดทั่วไปเกี่ยวกับ "map as object"
- คุณยังต้องจัดเตรียมฟังก์ชันสำหรับการตรวจสอบ "map as object" ความแตกต่างคือ "map as object" อนุญาตให้ใช้เกณฑ์การตรวจสอบที่ยืดหยุ่นมากขึ้น (จำกัด น้อยกว่า)
- คุณสามารถเพิ่มเขตข้อมูลเพิ่มเติมลงใน "แผนที่เป็นวัตถุ" ได้อย่างง่ายดาย
- ในการให้ข้อมูลจำเพาะเกี่ยวกับข้อกำหนดขั้นต่ำของวัตถุที่ถูกต้องคุณจะต้อง:
- แสดงรายการชุดคีย์ที่จำเป็นต้องมีน้อยที่สุดในแผนที่
- สำหรับแต่ละคีย์ที่ต้องตรวจสอบความถูกต้องของค่าให้จัดเตรียมฟังก์ชันการตรวจสอบค่า
- หากมีกฎการตรวจสอบที่ต้องตรวจสอบค่าคีย์หลายค่าให้ระบุเช่นกัน
- ประโยชน์คืออะไร การให้ข้อมูลจำเพาะด้วยวิธีนี้เป็นเรื่องครุ่นคิด: คุณสามารถเขียนโปรแกรมเพื่อสอบถามชุดคีย์ที่ต้องการน้อยที่สุดและรับฟังก์ชั่นการตรวจสอบความถูกต้องสำหรับแต่ละคีย์
- ใน OOP สิ่งเหล่านี้ทั้งหมดถูกรีดเป็นกล่องดำในชื่อ "encapsulation" แทนที่ตรรกะการตรวจสอบที่เครื่องอ่านได้ผู้โทรสามารถอ่าน "เอกสาร API" ที่มนุษย์สามารถอ่านได้เท่านั้น (ถ้าโชคดีมันมีอยู่)