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