เหตุใดจึงสร้างคลาสที่ซ้อนกัน
ฉันนึกถึงเหตุผลสำคัญสองสามข้อ:
1. เปิดใช้งานการห่อหุ้ม
หลายครั้งหลายชั้นซ้อนกันเป็นรายละเอียดการใช้งานของชั้นเรียน ผู้ใช้ชั้นเรียนหลักไม่ควรกังวลเกี่ยวกับการมีอยู่ของพวกเขา คุณควรจะสามารถเปลี่ยนได้ตามต้องการโดยไม่ต้องให้ผู้ใช้ระดับหลักเปลี่ยนรหัส
2. หลีกเลี่ยงมลพิษชื่อ
คุณไม่ควรเพิ่มประเภทตัวแปรฟังก์ชั่น ฯลฯ ในขอบเขตยกเว้นว่าเหมาะสมในขอบเขตนั้น นี่เป็นความแตกต่างเล็กน้อยจากการห่อหุ้ม อาจเป็นประโยชน์ในการเปิดเผยอินเตอร์เฟสของชนิดซ้อนกัน แต่ตำแหน่งที่เหมาะสมสำหรับประเภทซ้อนยังคงเป็นคลาสหลัก ในที่ดิน C ++ ประเภทตัววนซ้ำเป็นตัวอย่างหนึ่ง ฉันไม่ได้มีประสบการณ์ในภาษา C # มากพอที่จะยกตัวอย่างให้กับคุณได้
ลองทำตัวอย่างง่าย ๆ เพื่อแสดงให้เห็นว่าทำไมการย้ายคลาสที่ซ้อนกันไปยังขอบเขตเดียวกับคลาสหลักคือมลพิษชื่อ สมมติว่าคุณกำลังใช้คลาสรายการที่เชื่อมโยง โดยปกติคุณจะใช้
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
หากคุณตัดสินใจที่จะเลื่อนNode
ขึ้นไปอยู่ในขอบเขตเดียวกับที่LinkedList
คุณจะมี
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNode
ไม่น่าจะมีประโยชน์หากไม่มีLinkedList
คลาส แม้ว่าจะLinkedList
มีฟังก์ชั่นบางอย่างที่ส่งคืนLinkedListNode
วัตถุที่ผู้ใช้LinkedList
สามารถใช้ แต่ก็ยังLinkedListNode
มีประโยชน์เมื่อLinkedList
ใช้งานเท่านั้น ด้วยเหตุผลดังกล่าวการทำให้คลาส "โหนด" เป็นคลาสเพียร์ของLinkedList
กำลังก่อให้เกิดมลพิษที่มีขอบเขต