89 votes

Est-il possible d'avoir un constructeur privé dans Dart ?

Je suis en mesure de faire quelque chose comme ce qui suit en TypeScript

class Foo {
  private constructor () {}
}

donc ceci constructor n'est accessible que depuis l'intérieur de la classe elle-même.

Comment réaliser la même fonctionnalité en Dart ?

172voto

Mattia Points 3741

Il suffit de créer un constructeur nommé qui commence par _

class Foo {
  Foo._() {}
}

alors le constructeur Foo._() ne sera accessible que depuis sa classe (et sa bibliothèque).

3 votes

Comment puis-je écrire un test unitaire pour cela ?

6 votes

Vous ne serez pas en mesure d'écrire un test unitaire pour ce constructeur privé. Rappelez-vous, testez l'interface et non l'implémentation. Comme un constructeur privé ne sera pas accessible de l'extérieur de la bibliothèque, tester la méthode privée dans un test unitaire reviendrait à tester l'implémentation et non l'interface.

0 votes

Si c'est privé, comment se fait-il que je puisse faire Foo._() en dehors de la classe sans obtenir une erreur ?

29voto

cesar Points 221

Une méthode sans aucun code doit être quelque chose comme ceci

class Foo {
  Foo._();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X