Estou desenvolvendo um aplicativo que será usado para abrir e fechar válvulas em um ambiente industrial e pensei em algo simples como este: -
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
}
}
(A implementação gravaria alguns bytes de dados na porta serial para controlar a válvula - um "endereço" derivado do nome da válvula e um "1" ou "0" para abrir ou fechar a válvula).
Outro desenvolvedor perguntou se deveríamos criar uma classe separada para cada válvula física, da qual existem dezenas. Concordo que seria melhor escrever código como PlasmaValve.Open()
antes ValveController.OpenValve("plasma")
, mas isso é um exagero?
Além disso, eu estava imaginando a melhor forma de lidar com o design com alguns requisitos futuros hipotéticos em mente: -
- Somos solicitados a apoiar um novo tipo de válvula que exija valores diferentes para abrir e fechar (não 0 e 1).
- Somos solicitados a apoiar uma válvula que pode ser ajustada para qualquer posição de 0 a 100, em vez de simplesmente "aberta" ou "fechada".
Normalmente eu usaria herança para esse tipo de coisa, mas recentemente comecei a entender "composição sobre herança" e me pergunto se há uma solução mais simples usando composição?