"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Modèles de conception en Java avec exemples

Modèles de conception en Java avec exemples

Publié le 2024-11-09
Parcourir:456

Design Patterns in Java with examples

Que sont les modèles de conception en Java ?

Les modèles de conception sont des solutions réutilisables aux problèmes courants de la conception de logiciels. Ils représentent les meilleures pratiques qui peuvent être appliquées à diverses situations de développement de logiciels, en particulier dans la programmation orientée objet comme Java.

Types de modèles de conception

  • Modèles de création : Gérer les mécanismes de création d'objets.
  • Modèles structurels : Concerne la façon dont les classes et les objets sont composés.
  • Modèles comportementaux : Concentrez-vous sur la communication entre les objets.

Utilisations des modèles de conception

  • Promouvoir la réutilisabilité du code.
  • Améliorer la lisibilité et la maintenabilité du code.
  • Faciliter la communication entre les développeurs.

Exemples de modèles de conception

1. Modèle singleton

    public class Singleton {
        private static Singleton instance;

        private Singleton() {}

        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
Avantages :
  • Accès contrôlé à une seule instance.
  • Économise de la mémoire en empêchant plusieurs instances.
Inconvénients :
  • Difficile à tester en raison de l'état global.
  • Peut conduire à un couplage serré.

2. Modèle d'observateur

    import java.util.ArrayList;
    import java.util.List;

    interface Observer {
        void update(String message);
    }

    class Subject {
        private List observers = new ArrayList();

        public void addObserver(Observer observer) {
            observers.add(observer);
        }

        public void notifyObservers(String message) {
            for (Observer observer : observers) {
                observer.update(message);
            }
        }
    }
Avantages :
  • Favorise un couplage lâche entre le sujet et les observateurs.
  • Facilement extensible avec de nouveaux observateurs.
Inconvénients :
  • Mauvaises performances s'il y a de nombreux observateurs.
  • Difficile à déboguer en raison de la communication indirecte.

3. Modèle de constructeur

    class Product {
        private String part1;
        private String part2;

        public void setPart1(String part1) { this.part1 = part1; }
        public void setPart2(String part2) { this.part2 = part2; }
    }

    class Builder {
        private Product product = new Product();

        public Builder buildPart1(String part1) {
            product.setPart1(part1);
            return this;
        }

        public Builder buildPart2(String part2) {
            product.setPart2(part2);
            return this;
        }

        public Product build() {
            return product;
        }
    }
Avantages :
  • Simplifie la création d'objets complexes.
  • Rend le code plus lisible et maintenable.
Inconvénients :
  • Ajoute de la complexité avec plusieurs classes de générateur.
  • Peut être excessif pour des objets simples.

4. Modèle d'usine

    interface Shape {
       void draw();
    }

    class Circle implements Shape {
       public void draw() { System.out.println("Drawing a Circle"); }
    }

    class Rectangle implements Shape {
       public void draw() { System.out.println("Drawing a Rectangle"); }
    }

    class ShapeFactory {
       public Shape getShape(String shapeType) {
          if (shapeType == null) return null;
          if (shapeType.equalsIgnoreCase("CIRCLE")) return new Circle();
          if (shapeType.equalsIgnoreCase("RECTANGLE")) return new Rectangle();
          return null;
       }
    }
Avantages :
  • Encapsule la logique de création d'objet.
  • Facilement extensible pour de nouvelles formes sans modifier le code existant.
Inconvénients :
  • Ajoute des classes supplémentaires qui peuvent augmenter la complexité.
  • S'il n'est pas utilisé correctement, peut conduire à une prolifération des classes d'usine.

La bande des quatre (GoF)

Le « Gang of Four » fait référence aux auteurs du livre influent intitulé « Design Patterns : Elements of Realistic Object-Oriented Software ». Les auteurs, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides, ont présenté 23 modèles de conception classiques qui sont devenus la base du génie logiciel.

Conclusion

Les modèles de conception sont des outils essentiels de la programmation Java qui aident les développeurs à créer des systèmes robustes et maintenables. Comprendre leurs utilisations, avantages et inconvénients est crucial pour une conception de logiciels efficace. Les contributions du Gang of Four fournissent une base solide pour appliquer efficacement ces modèles.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/codegreen/design-patterns-in-java-with-examples-1klg?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3