0

j'ai commencé modèles de conception auto d'apprentissage de modèles de conception par Gang of Four pour composer le comportement dans systèmes orientés objetComment faire une comparaison une opération implémentée par des sous-classes et un modèle de Template?

types paramétrés nous donner une troisième voie (en plus de l'héritage de classe et la composition de l'objet). De nombreux modèles peuvent être mis en œuvre en utilisant l'une des ces trois techniques. Pour paramétrer une routine de tri par l'opération qu'il utilise pour comparer les éléments, nous pourrions faire la comparaison

  1. une opération mise en œuvre par les sous-classes (une application de la méthode modèle (325)),
  2. la la responsabilité d'un objet transmis à la routine de tri (Strategy (315)), ou
  3. un argument d'un modèle C++ ou d'un générique Ada qui spécifie le nom de la fonction à appeler pour comparer les éléments.

Je levais les yeux le modèle de modèle, mais se demandait encore comment la première manière « faire la comparaison d'une opération mise en œuvre par les sous-classes (une application de modèle méthode) » est fait?

J'apprécierais quelques exemples dans n'importe quel langage OO: C++, C#, Java, Python, ... Merci.

Répondre

1

Ils parlent essentiellement de quelque chose comme ceci:

class Sorter { 
    sort(Collection c) { 
    ... 
    if (isLessThan(a, b)) ... 
    ... 
    } 

    abstract isLessThan(); 
} 

class MyTypeSorter(Sorter) { 
    isLessThan(a, b) { 
    return a.member < b.member; 
    } 
} 
+0

Merci. (1) Dans quelle langue avez-vous écrit votre exemple? Ou la langue la plus proche? (2) Quels langages OO (ou leurs bibliothèques standard) fournissent l'implémentation de modèle de tri? Java, C++, C#, Python, ...? – Ben

+0

1) C'est code psuedo :) Tri d'un mélange entre Java et Python, je suppose. 2) Java, C# et Python utilisent Stratégie; C++ utilise un paramètre de modèle. Je ne connais pas de langage qui utilise le modèle de fonction de modèle pour cela, et j'admets que cela ressemble à un choix étrange étant donné les alternatives. –