Java Inner Classes Design Benifits
En java, vous pouvez avoir des classes internes. Je suis curieux de savoir à partir d'une conception de point de vue, si il y a des avantages à cela.
Mes premières impressions sont que le fait d'avoir un fichier séparé avec la classe est plus propre à séparer les choses dans des modules réutilisables. Ce faisant, si les autres classes souhaitez utiliser que les autres de la classe, ils peuvent aussi faire leurs propres instances. Pour moi, il semble être en évitant les classes internes peuvent être une meilleure conception pour l'extensibilité et la réutilisation du code, et lorsque l'on travaille sur de nouveaux projets, son normalement difficile de dire si la classe devrait être réutilisés ou pas... j'ai donc le sentiment d'un parement ayant des classes séparées est le chemin à parcourir.
Je pose cette question parce que j'ai pris sur un projet qui a un tas de ces... qui me fait penser à la précédente développeur peut juste d'être paresseux ou peu familiers avec l'IDE. Mais je veux m'assurer que je suis ne manque pas tous les avantages que ces classes internes ont. Si il y a des avantages quelqu'un peut-il me le faire savoir, et puis je peux confirmer si le développeur précédent profiter de ces avantages.
source d'informationauteur James Oravec
Vous devez vous connecter pour publier un commentaire.
Les classes internes sont bons quand ils ne sont pas utilisés à l'extérieur du contenant de classe - c'est une façon de restreindre la classe de ballonnements. En règle générale, c'est la seule fois que je l'utilise.
Non-statique à l'intérieur des classes ont également accès à l'contenant de l'instance de champs privés.
Les classes internes sont utiles pour:
Masquer les détails d'implémentation.
Faire des projets plus concise et compréhensible.
Ajouter regroupement logique du code.
Une bonne utilisation des classes internes qui vient dans mon esprit est dans java.util.ArrayList qui cache ses itérateurs implémentations dans
private inner classes
. Vous ne pouvez pas les créer, sauf en invoquantiterator()
oulistIterator()
sur la liste d'objet.De cette façon, le
Iterator
etListIterator
implémentations pourArrayList
sont regroupés avec leur classe et des méthodes pour une meilleure lisibilité (les implémentations sont assez courts), mais caché aux autres.Ils ne peuvent pas être déclarés
static
comme ils ont besoin d'accéder à leur joignant instance objet.Non-statique à l'intérieur de la classe:
1) à l'Intérieur de la classe sera utilisée pour effectuer certaines tâches au cours de l'extérieur de la classe et renvoie le résultat
. Donc, il faudra s'assurer que l'extérieur de la classe de l'objet est créée pour y accéder.
2) à l'Intérieur de la classe n'est spécifique à l'extérieur de la classe et aucune utilisation sur le monde extérieur. Donc pas besoin de penser à la réutilisation de code.
e.g_1) Le meilleur exemple à l'intérieur de la classe est
iterator
la mise en œuvre du cadre de collecte. Set(AbstractCollection.java) et la Liste(AbstractList.java) va utiliser différents itérateur interne implémentation de la classe.-> On peut réutiliser l'intérieur de la classe code. Par exemple, la mise en œuvre de
private class Itr
innerclass àjava.util.AbstractList
est utilisé par les deux Arraylist et Vecteur.Statique à l'intérieur de la classe:
1) Statique à l'intérieur de la classe ne dépendra pas d'un extérieur de la classe de l'objet; mais il est spécifique à l'extérieur de la classe. Il ne sera pas exposé à autonome car il est spécifique à l'extérieur de la classe. Donc pas de réutilisation de code.
2) Il y a un groupe de méthodes qui leur est commun(partagé) de tous les objets (niveau de Classe)
3)
e.g_1) Sigleton objet retrival à l'aide de statique à l'intérieur de la classe.
e.g_2) Générateur de Pattern
e.g_3) Comparateur de mise en œuvre pour une classe .
Intérieur de la classe sont quelque chose de très important, il vous aide à réaliser l'encapsulation des besoins très neaty, votre base de classe peut hériter de plusieurs classes (de la mise en œuvre abstraite des gestionnaires par exemple). Chaque programmeur peut apprendre comment utiliser l'intérieur de la classe en Java, il est très utile de chose.