คำตอบที่ดีทั้งหมดที่นี่ ฉันต้องการเพิ่มการใช้งานฟังก์ชันคงที่ในอินเทอร์เฟซ เคล็ดลับมาจากหนังสือ - Effective Java, 3rd Edition โดย Joshua Bloch ใน Chapter2: การสร้างและทำลายวัตถุ
Static functions can be used for static factory methods.
วิธีโรงงานแบบคงที่คือวิธีการที่ส่งคืนวัตถุ พวกเขาทำงานเหมือนตัวสร้าง ในบางกรณีวิธีการโรงงานแบบคงที่ให้รหัสที่อ่านได้มากกว่าการใช้ตัวสร้าง
อ้างจากหนังสือ - Effective Java, 3rd Edition โดย Joshua Bloch
ก่อนหน้า Java 8 อินเทอร์เฟซต้องไม่มีเมธอดแบบคงที่ ตามแบบแผนวิธีการโรงงานแบบคงที่สำหรับอินเทอร์เฟซที่ชื่อ Type ถูกใส่ไว้ในคลาสการแสดงร่วมที่ไม่หยุดนิ่ง (รายการ 4) ที่ชื่อประเภท
ผู้เขียนยกตัวอย่างคอลเลกชันที่ใช้วิธีการโรงงานแบบคงที่ดังกล่าว เมื่อตรวจสอบโค้ดแล้ว Josh Bloch จะถูกมองว่าเป็นผู้เขียนคนแรกของคลาส Collections แม้ว่าคอลเล็กชันจะเป็นคลาสและไม่ใช่ส่วนต่อประสาน แต่แนวคิดยังคงใช้ได้
ตัวอย่างเช่น Java Collections Framework มีการใช้งานยูทิลิตี้สี่สิบห้าอินเทอร์เฟซซึ่งจัดเตรียมคอลเล็กชันที่ไม่สามารถแก้ไขได้คอลเลกชันที่ซิงโครไนซ์และอื่น ๆ การใช้งานเหล่านี้เกือบทั้งหมดถูกส่งออกผ่านวิธีการโรงงานแบบคงที่ในคลาสเดียวที่ไม่หยุดนิ่ง (java.util.Collections) คลาสของอ็อบเจ็กต์ที่ส่งคืนทั้งหมดไม่เปิดเผยต่อสาธารณะ
นอกจากนี้เขายังอธิบายว่า API ไม่เพียง แต่มีขนาดเล็กลงเท่านั้น แต่ยังช่วยในเรื่องการอ่านโค้ดและ API ที่ง่ายดายอีกด้วย ..
ไม่ใช่แค่ส่วนใหญ่ของ API ที่ลดลง แต่เป็นน้ำหนักของแนวคิด: จำนวนและความยากของแนวคิดที่โปรแกรมเมอร์ต้องเชี่ยวชาญเพื่อใช้ API โปรแกรมเมอร์รู้ว่าออบเจ็กต์ที่ส่งคืนมี API ที่ระบุโดยอินเทอร์เฟซอย่างแม่นยำดังนั้นจึงไม่จำเป็นต้องอ่านเอกสารประกอบคลาสเพิ่มเติมสำหรับคลาสการนำไปใช้งาน
นี่คือหนึ่งในวิธีการคงที่จากคลาส java.util.Collections:
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
return new UnmodifiableCollection<>(c);
}