patrones de diseño para la conversión de moneda?

Me preguntaba si podríamos aplicar patrones de diseño para escribir código para la conversión de moneda, y si es así, ¿cuáles serían? La suposición es que las tasas de conversión son estáticas y podemos codificarlas.

Pensé en usar el 'patrón de estado' donde cada estado representa una moneda específica y tiene fórmulas encapsuladas en los métodos correspondientes para la conversión, p. 'toDollars ()', 'toPounds ()' etc.

Otra posibilidad (no estoy seguro si es un patrón de diseño) es usar objetos de función que se convierten de una moneda específica a otra, y almacenarlos como valores en una tabla de hash de 2 niveles donde la clave del primer nivel es la moneda 'desde' y el segundo nivel la clave es la moneda 'a'.

¿Hay otros patrones de diseño para aplicar a este problema? El problema en su nivel más abstracto es que tenemos entidades 'm' y todas son inter-convertibles en base a algunas reglas específicas. Los ejemplos son convertir valores de zona horaria entre sí; fechas de calendario de diferentes tipos de calendario (gregoriano / chino), etc. entre sí.

¡Gracias y saludos