J'apprends des modèles Desgin et rencontre un exemple très étrange dans HERE. Si nous avons une classe:Résumé Usine modèle - code inutilisé
public abstract class AbstractFactory {
abstract Color getColor(String color);
abstract Shape getShape(String shape) ;
}
qui, comme on peut le voir, a 2 types de méthodes qui crée des objets: des couleurs et des formes. Cette classe est abstraite si nous devons créer la mise en œuvre concrète de cette, laisse supposer que nous avons:
public class ShapeFactory extends AbstractFactory {
@Override
public Shape getShape(String shapeType){
// I skip implementation to keep post brief
}
@Override
Color getColor(String color) {
return null; // It's useless method in this class!
}
}
et deuxième mise en œuvre:
public class ColorFactory extends AbstractFactory {
@Override
public Shape getShape(String shapeType){
return null; // It's useless method in this class!
}
@Override
Color getColor(String color) {
// I skip implementation to keep post brief
}
}
Et ici vient ma question, dans les deux cas (béton usines) il ya une méthode qui est complètement inutile et ne devrait pas être là, mais comme nous avons créé la classe AbstractFactory nous devons implémenter les deux méthodes. N'est-ce pas une mauvaise pratique en programmation de créer des méthodes inutiles dans les classes qui n'en ont pas besoin? Devrait-il être fait autrement, pas comme le suggère le site Web?
demandez-vous, une façon de sauter un remplaçant de la méthode? – Ravi
Ce tutoriel n'a aucun sens du tout. Vous avez raison d'être confus. –
Dans un certain point oui. Je suis confus car les schémas de becouse devraient rendre le code plus pertinent, mais dans ce cas il me semble que c'est loin des bonnes pratiques. Alors, que proposez-vous de changer dans ce code? – Michael213