Ö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.
}
Node
Aynı kapsamda ilerlemeye karar verirseniz LinkedList
,
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNode
LinkedList
Sınıfın kendisi olmadan yararlı olması muhtemel değildir . Bile LinkedList
bir returnd bazı işlevleri sağlanan LinkedListNode
bir kullanıcı söz konusu nesneyi LinkedList
kullanabilirsiniz, hala yapar LinkedListNode
işe yarayan LinkedList
kullanılır. Bu nedenle, "düğüm" sınıfını bir eş sınıfı yapmak, LinkedList
bu kapsamı kirletiyor.