Quelle est l'alternative de programmation fonctionnelle à une interface?
https://softwareengineering.stackexchange.com/questions/189047
-
05-11-2019 - |
Question
Si je veux programmer dans un style "fonctionnel", que pourrais-je remplacer une interface?
interface IFace
{
string Name { get; set; }
int Id { get; }
}
class Foo : IFace { ... }
Peut-être un Tuple<>
?
Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo;
La seule raison pour laquelle j'utilise une interface en premier lieu est que je veux toujours que certaines propriétés / méthodes disponibles.
Éditer: Un peu plus de détails sur ce que je pense / tente.
Dites, j'ai une méthode qui prend trois fonctions:
static class Blarf
{
public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId);
}
Avec une instance de Bar
Je peux utiliser cette méthode:
class Bar
{
public string GetName();
public void SetName(string value);
public int GetId();
}
...
var bar = new Bar();
Blarf.DoSomething(bar.GetName, bar.SetName, bar.GetId);
Mais c'est un peu pénible car je dois mentionner bar
Trois fois en un seul appel. De plus, je n'ai pas vraiment l'intention pour les appelants de fournir des fonctions à partir de différentes instances
Blarf.DoSomething(bar1.GetName, bar2.SetName, bar3.GetId); // NO!
En C #, un interface
est une façon de gérer cela; Mais cela semble être une approche très orientée objet. Je me demande s'il y a une solution plus fonctionnelle: 1) passer le groupe de fonctions ensemble et 2) s'assurer que les fonctions sont correctement liées les unes aux autres.
Pas de solution correcte