Je développe une application qui sera utilisée pour ouvrir et fermer les vannes dans un environnement industriel, et je pensais à quelque chose de simple comme ceci: -
public static void ValveController
{
public static void OpenValve(string valveName)
{
// Implementation to open the valve
}
public static void CloseValve(string valveName)
{
// Implementation to close the valve
}
}
(L'implémentation écrirait quelques octets de données sur le port série pour contrôler la vanne - une "adresse" dérivée du nom de la vanne, et soit "1" ou "0" pour ouvrir ou fermer la vanne).
Un autre développeur a demandé si nous devrions plutôt créer une classe distincte pour chaque vanne physique, dont il existe des dizaines. Je suis d'accord qu'il serait plus agréable d'écrire du code PlasmaValve.Open()
plutôt que ValveController.OpenValve("plasma")
, mais est-ce exagéré?
De plus, je me demandais comment aborder au mieux la conception avec quelques exigences futures hypothétiques à l'esprit: -
- On nous demande de prendre en charge un nouveau type de vanne nécessitant différentes valeurs pour l'ouvrir et la fermer (pas 0 et 1).
- On nous demande de supporter une valve qui peut être réglée dans n'importe quelle position de 0 à 100, plutôt que simplement "ouverte" ou "fermée".
Normalement, j'utiliserais l'héritage pour ce genre de choses, mais j'ai récemment commencé à me concentrer sur "la composition plutôt que l'héritage" et je me demande s'il y a une solution plus lisse à utiliser en utilisant la composition?