Ajouter des interfaces
« fluent » à vos classes .Net
Eric Moreau, MVP
Moer inc.
eric@moer.ca
www.moer.ca
Interfaces « Fluent »
• Terme viendrait de Eric Evans et Martin Fowler
• Définition Wikipédia
• « implementation of an obj...
Interfaces « Fluent »
• Vous les utilisez déjà depuis longtemps!
• Un premier exemple
Dim s As String = "Eric Moreau"
s = ...
Interfaces « Fluent »
• LINQ est « fluent » depuis le début
• Voici un 2e exemple
Dim fileList = dir.
GetFiles("*.*").
Whe...
Interfaces « Fluent » - Alternatives
• Object Initializer
• Propriétés seulement
• À l’initialisation seulement
• With … E...
Interfaces « Fluent » - Ma recette
• Ma recette s’intègre à une classe qui existe déjà sans changer son
comportement actue...
Interfaces « Fluent » - Ma recette
• Étape 2 – Créez une interface (fonction retourne interface)
Public Interface IEmploye...
Interfaces « Fluent » - Ma recette
• Étape 3 – Implémentez l’interface
Public Function OfName(ByVal pName As String) As IE...
Interfaces « Fluent » - Ma recette
• Étape 4 – Utilisez
Dim emp2 As IEmployeeFluent = New Employee()
MessageBox.Show(emp2....
Interfaces « Fluent » - Ma recette
• Mais d’habitude on n’aime même pas créer une instance
• On ajoute donc une méthode d’...
Interfaces « Fluent » - Ma recette
• Utilisez la méthode d’initialisation
Dim emp As IEmployeeFluent = Employee.Hire().
Of...
En conclusion
• Simple
• Meilleure expérience d’utilisation
• « fit » bien avec les nouveaux APIs comme LINQ
• Article de ...
Ajouter des interfaces
« fluent » à vos classes .Net
Eric Moreau, MVP
Moer inc.
eric@moer.ca
www.moer.ca
Prochain SlideShare
Chargement dans…5
×

Eric Moreau: Fluent interfaces

345 vues

Publié le

12 janvier 2015
Groupe Architecture

Sujet 1: Ajouter des interfaces "fluent" à vos classes
Conférencier: Eric Moreau, MVP

Les interfaces "fluent" sont élégantes et très faciles à lire. De plus, elles sont super simples à implémenter. Cette courte présentation démontrera comment les intégrer vos propres classes.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
345
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Eric Moreau: Fluent interfaces

  1. 1. Ajouter des interfaces « fluent » à vos classes .Net Eric Moreau, MVP Moer inc. eric@moer.ca www.moer.ca
  2. 2. Interfaces « Fluent » • Terme viendrait de Eric Evans et Martin Fowler • Définition Wikipédia • « implementation of an object oriented API that aims to provide more readable code » • « normally implemented by using method cascading (concretely method chaining) to relay the instruction context of a subsequent call »
  3. 3. Interfaces « Fluent » • Vous les utilisez déjà depuis longtemps! • Un premier exemple Dim s As String = "Eric Moreau" s = s.Trim() s = s.ToUpper() s = s.Replace("R", "z") string s = "Eric Moreau"; s = s.Trim(); s = s.ToUpper(); s = s.Replace("R", "z"); Dim s2 As String = "Eric Moreau". Trim(). ToUpper(). Replace("R", "z") string s2 = "Eric Moreau". Trim(). ToUpper(). Replace("R", "z");
  4. 4. Interfaces « Fluent » • LINQ est « fluent » depuis le début • Voici un 2e exemple Dim fileList = dir. GetFiles("*.*"). Where(Function(f) f.Name.StartsWith("odbc")). OrderBy(Function(f) f.FullName) var fileList = dir. GetFiles("*.*"). Where(f=> f.Name.StartsWith("odbc")). OrderBy(f => f.FullName);
  5. 5. Interfaces « Fluent » - Alternatives • Object Initializer • Propriétés seulement • À l’initialisation seulement • With … End With (VB only) • Semble similaire • Vraiment pas « fluent » Dim emp2 As Employee = New Employee With { .Name = "Eric Moreau", .Dob = New DateTime(1970, 5, 28), .HireDate = New DateTime(2007, 2, 1), .Salary = 123456, .BossName = "Pointy-Haired Boss" } Dim emp3 As Employee = New Employee With emp3 .Name = "Eric Moreau" .Dob = New DateTime(1970, 5, 28) .HireDate = New DateTime(2007, 2, 1) .Salary = 123456 .BossName = "Pointy-Haired Boss" End With
  6. 6. Interfaces « Fluent » - Ma recette • Ma recette s’intègre à une classe qui existe déjà sans changer son comportement actuel • Étape 1 – Partez d’une classe régulière Public Name As String Public Dob As Date Public HireDate As Date Public Salary As Int32 Public BossName As String
  7. 7. Interfaces « Fluent » - Ma recette • Étape 2 – Créez une interface (fonction retourne interface) Public Interface IEmployeeFluent Function OfName(ByVal pName As String) As IEmployeeFluent Function AsOf(ByVal pDate As Date) As IEmployeeFluent Function BornOn(ByVal pDate As Date) As IEmployeeFluent Function SetSalary(ByVal pSalary As Int32) As IEmployeeFluent Function ReportTo(ByVal pName As String) As IEmployeeFluent End Interface
  8. 8. Interfaces « Fluent » - Ma recette • Étape 3 – Implémentez l’interface Public Function OfName(ByVal pName As String) As IEmployeeFluent Implements IEmployeeFluent.OfName Name = pName Return Me End Function Public Function AsOf(ByVal pDate As Date) As IEmployeeFluent Implements IEmployeeFluent.AsOf HireDate = pDate Return Me End Function Public Function BornOn(ByVal pDate As Date) As IEmployeeFluent Implements IEmployeeFluent.BornOn DOB = pDate Return Me End Function …
  9. 9. Interfaces « Fluent » - Ma recette • Étape 4 – Utilisez Dim emp2 As IEmployeeFluent = New Employee() MessageBox.Show(emp2. OfName("Eric Moreau"). AsOf(New DateTime(2007, 2, 1)). BornOn(New DateTime(1970, 5, 28)). SetSalary(123456). ReportTo("Pointy-Haired Boss"). ToString())
  10. 10. Interfaces « Fluent » - Ma recette • Mais d’habitude on n’aime même pas créer une instance • On ajoute donc une méthode d’initialisation à notre objet Public Shared Function Hire() As IEmployeeFluent Return New Employee End Function
  11. 11. Interfaces « Fluent » - Ma recette • Utilisez la méthode d’initialisation Dim emp As IEmployeeFluent = Employee.Hire(). OfName("Eric Moreau"). AsOf(New DateTime(2007, 2, 1)). BornOn(New DateTime(1970, 5, 28)). SetSalary(123456). ReportTo("Pointy-Haired Boss") MessageBox.Show(emp.ToString())
  12. 12. En conclusion • Simple • Meilleure expérience d’utilisation • « fit » bien avec les nouveaux APIs comme LINQ • Article de mars 2014 • http://emoreau.com/Entries/Articles/2014/03/Net-fluent-interface.aspx
  13. 13. Ajouter des interfaces « fluent » à vos classes .Net Eric Moreau, MVP Moer inc. eric@moer.ca www.moer.ca

×