Mode de conception Big Talk - mode d'ingénierie simple

Mode de conception: mode d'ingénierie simple

Définition et structure

définition

Le mode d'ingénierie simple appartient au mode de création, également appelé mode de méthode d'ingénierie statique. En mode d'ingénierie simple, les instances de différentes classes peuvent être renvoyées en fonction de différents paramètres. Le mode de fabrique statique définit spécifiquement une classe chargée de créer des instances de sous-classes. , Les sous-classes créées ont généralement une classe parente commune

Diagramme de structure

Généralement divisé en trois catégories:

  • Factory: la classe factory, au cœur du modèle d'ingénierie simple, est responsable de la mise en œuvre de la logique interne de création de toutes les instances. La méthode de création d'une classe de produit de la classe d'usine peut être directement appelée par le monde extérieur pour créer l'objet de produit requis.
  • IProduce: classe de produit abstraite, la classe parente de tous les objets créés par le modèle d'ingénierie simple, qui est chargée de décrire l'interface commune à toutes les instances
  • Produit: La catégorie de produit spécifique est la catégorie cible du modèle d'ingénierie simple.

atteindre

Supposons qu'un fabricant de stylos souhaite produire différents types de stylos, une classe distincte est donc nécessaire pour produire des stylos.

Classe de résumé de produit

public abstract class Pen {
    
    
   // 产品的抽象方法,由具体的产品类去实现
    public abstract void start();
}

Classe d'implémentation spécifique

public class Pencil extends Pen {
    
    
    @Override
    public void start(){
    
    
        System.out.println("pencil start!");
    }
}

public class Ballpen extends Pen {
    
    
    @Override
    public void start(){
    
    
        System.out.println("Ballpen start!");
    }
}

Classe d'usine

public class PenFactory {
    
    
    public static  Pen creatPen(String type){
    
    
        Pen pen=null;
        switch(type){
    
    
            case "pencil":
                pen=new Pencil();
                break;
            case "ballpen":
                pen= new Ballpen();
                break;
            default:
                break;
        }
        return pen;
    }
}

tester

public class Test {
    
    

    public static void main(String[] args) {
    
    
        Pen pen=PenFactory.creatPen("pencil");
        pen.start();
    }
}

Avantages et inconvénients

avantage

  • La classe d'usine contient les jugements logiques nécessaires, qui peuvent décider quelle instance de classe de produit créer au moment ci-dessus, le client peut exempter la responsabilité de créer des objets de produit entre eux, et ne consommer que le produit, réalisant la répartition des responsabilités.
  • Le côté client connaît le nom de la catégorie de produit spécifique, et n'a besoin de connaître que les paramètres correspondants pour faciliter la création
  • En introduisant des fichiers de configuration, de nouvelles catégories de produits spécifiques peuvent être remplacées et ajoutées sans changer le code client, ce qui améliore dans une certaine mesure la flexibilité du système.

Désavantage

  • Étant donné que la classe d'usine se concentre sur la logique de création de tous les produits, une fois qu'un problème survient, tout le système sera affecté
  • L'expansion du système est difficile. Une fois qu'un nouveau produit est ajouté, la logique d'usine doit être modifiée, ce qui rompt le principe d'ouverture et de fermeture. Dans le cas de plus de produits, il est facile de provoquer une logique complexe, qui n'est pas propice à l'expansion et à la maintenance.
  • Le modèle d'usine simple utilise des méthodes d'ingénierie statiques, ce qui empêche les rôles d'ingénierie de former une hiérarchie basée sur l'héritage

Scène applicable

  • La classe de fabrique est chargée de créer moins d'objets. Comme il y a moins d'objets créés, la logique métier ne sera pas trop compliquée
  • Le client a seulement besoin de connaître les paramètres créés et n'a pas besoin de se soucier de la façon de les implémenter

Enfin

  • Si vous sentez que vous êtes récompensé après la lecture, j'espère me donner un coup de pouce. Ce sera ma plus grande motivation pour la mise à jour. Merci pour votre soutien.
  • Invitez tout le monde à faire attention à mon compte officiel [java Toka Fox], à vous concentrer sur les connaissances de base de java et de l’ordinateur, et à vous assurer que vous obtiendrez quelque chose après l’avoir lu. Si vous ne me croyez pas, contactez-moi
  • Si vous avez des opinions ou des suggestions différentes après la lecture, n'hésitez pas à commenter et partager. Merci pour votre soutien et votre amour.

Je suppose que tu aimes

Origine blog.csdn.net/issunmingzhi/article/details/107014060
conseillé
Classement