Olá Flávio, tudo bem? Creio que minha pergunta independe da linguagem.
Suponha que minha classe X possua um método que computa a similaridade entre imagens de face de pessoas, sendo que essa função não é fixa, podendo ser trocada dinamicamente pelo usuário (usando Strategy).
Suponha que, previamente em um programa, usamos a funçao ABC para computar a similaridade de um dado conjunto de imagens do meu banco, salvando tal matriz de similaridades no disco.
Em outro programa, quando uma nova imagem chegar, precisarei utilizar a mesma função ABC para o cômputo da simiaridade, para daí ver qual imagem do meu conjunto prévio, cujas medidas eu já tenho salvas previamente, é mais parecida com essa nova imagem.
Supondo que eu salvarei no disco a instância da classe X, qual é a melhor maneira d'eu salvar também que a função de similaridade usada foi a ABC? Vou ter que criar uma flag para cada função, tendo que usar uma série de ifs depois?
if (type == "ABC")
funcao_usada = ABC()
elif (type == "DEF")
funcao_usada = DEF()