Öyleyse neden iç içe bir sınıf oluşturdunuz?
Birkaç önemli neden düşünebilirim:
1. Enkapsülasyonu etkinleştirin
Çoğu zaman iç içe geçmiş sınıflar sınıfın uygulama detaylarıdır. Ana sınıftaki kullanıcılar, varlıklarını dikkate almamalıdır. Ana sınıfın kullanıcılarının kodlarını değiştirmelerini gerektirmeden istediklerinizi değiştirebilmelisiniz.
2. İsim kirliliğinden kaçının
Kapsamda uygun olmadıkça, kapsam, tür, değişken, işlev vb. Eklememelisiniz. Bu, kapsüllemeden biraz farklıdır. Yuvalanmış bir türün arabirimini ortaya çıkarmak yararlı olabilir, ancak yuvalanmış tür için uygun yer hala ana sınıftır. C ++ topraklarında, yineleyici türleri böyle bir örnektir. C # konusunda size örnekler verebilecek kadar deneyimli değilim.
İç içe geçmiş bir sınıfı neden ana sınıfla aynı kapsamda taşımanın isim kirliliği olduğunu göstermek için basit bir örnek verelim. Diyelim ki bağlantılı bir liste sınıfı uyguluyorsunuz. Normalde, kullanır
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
NodeAynı kapsamda ilerlemeye karar verirseniz LinkedList,
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNodeLinkedListSınıfın kendisi olmadan yararlı olması muhtemel değildir . Bile LinkedListbir returnd bazı işlevleri sağlanan LinkedListNodebir kullanıcı söz konusu nesneyi LinkedListkullanabilirsiniz, hala yapar LinkedListNodeişe yarayan LinkedListkullanılır. Bu nedenle, "düğüm" sınıfını bir eş sınıfı yapmak, LinkedListbu kapsamı kirletiyor.