Maison  >  Article  >  Java  >  Introduction à la pratique des modèles de conception en langage Java

Introduction à la pratique des modèles de conception en langage Java

王林
王林original
2023-06-11 16:09:071139parcourir

Introduction pratique aux modèles de conception en langage Java

Les modèles de conception sont une idée et une méthode éprouvées pour résoudre les problèmes de conception et de développement de logiciels. Ils réduisent la complexité du développement logiciel et fournissent un code flexible et réutilisable. Dans le langage Java, l’application de modèles de conception est extrêmement importante. Cet article présentera plusieurs modèles de conception couramment utilisés dans le langage Java et leurs applications pratiques.

  1. Factory Pattern

Factory Pattern est un modèle de conception permettant de créer des objets. Il encapsule le processus de création d'objets dans une seule classe afin que de nouvelles instances puissent être facilement générées en cas de besoin. Le modèle d'usine peut réduire efficacement la duplication de code tout en offrant une plus grande flexibilité. Voici un exemple de modèle d'usine :

//定义接口
public interface Animal {
   void makeSound();
}

//定义实现类
public class Cat implements Animal{
   @Override
   public void makeSound() {
      System.out.println("Meow");
   }
}

public class Dog implements Animal{
   @Override
   public void makeSound() {
      System.out.println("Woof");
   }
}

public class AnimalFactory {
   public static Animal createAnimal(String animalType){
      if(animalType.equalsIgnoreCase("dog")){
         return new Dog();
      }
      else if(animalType.equalsIgnoreCase("cat")){
         return new Cat();
      }
      else return null;
   }
}

//测试
public class FactoryTest {
   public static void main(String[] args) {
      Animal myAnimal = AnimalFactory.createAnimal("dog");
      myAnimal.makeSound();
   }
}
  1. Modèle Singleton

Le modèle singleton est un modèle de conception qui garantit qu'une classe n'a qu'une seule instance. Il est généralement utilisé pour contrôler les ressources et gérer des objets individuels. Le modèle singleton en Java peut être implémenté dans un style paresseux ou affamé. Voici un exemple de modèle Singleton de style Hungry :

public class Singleton {
   private static Singleton uniqueInstance = new Singleton();
   private Singleton() {} 
   
   public static Singleton getInstance() {
      return uniqueInstance;
   }
}
  1. Modèle Observateur

Le modèle Observateur est un modèle dans lequel un objet (appelé observateur) s'enregistre auprès d'un autre objet (appelé sujet) pour recevoir des notifications lorsque les sujets changent. Le modèle Observer vous aide à concevoir des systèmes faiblement couplés dans lesquels les objets interagissent les uns avec les autres sans provoquer d'effets de couplage. Voici un exemple du modèle Observer :

//定义接口
public interface Observer {
   public void update(int temperature, int humidity, int pressure);
}

//实现类
public class WeatherData implements Subject {

   private ArrayList<Observer> observers;
   private int temperature;
   private int humidity;
   private int pressure;
   
   public WeatherData(){
      observers = new ArrayList<Observer>();
   }
   
   public void registerObserver(Observer o) {
      observers.add(o);
   }

   public void removeObserver(Observer o) {
      int i = observers.indexOf(o);
      if (i >= 0) {
         observers.remove(i);
      }
   }

   public void notifyObservers() {
      for (Observer observer : observers) {
         observer.update(temperature, humidity, pressure);
      }
   }
   
   public void measurementsChanged() {
      notifyObservers();
   }
   
   public void setMeasurements(int temperature, int humidity, int pressure) {
      this.temperature = temperature;
      this.humidity = humidity;
      this.pressure = pressure;
      measurementsChanged();
   }
}

//测试
public class WeatherStation {

   public static void main(String[] args) {
      WeatherData weatherData = new WeatherData();
      CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData);
      weatherData.setMeasurements(80, 65, 30.4f);
      weatherData.setMeasurements(82, 70, 29.2f);
   }
}
  1. Strategy Pattern

Le modèle de stratégie est un modèle dans lequel un objet sépare le comportement en différentes implémentations. Il vous permet de choisir l’implémentation de votre algorithme au moment de l’exécution, offrant ainsi une plus grande flexibilité. Le modèle de stratégie vous aide à concevoir du code réutilisable tout en réduisant la duplication.

//定义接口
public interface FlyBehavior {
   public void fly();
}

public class FlyWithWings implements FlyBehavior {
   public void fly() {
      System.out.println("I'm flying!!");
   }
}

public interface QuackBehavior {
   public void quack();
}

public class Quack implements QuackBehavior {
   public void quack() {
      System.out.println("Quack");
   }
}

//策略模式实现类
public abstract class Duck {
   FlyBehavior flyBehavior;
   QuackBehavior quackBehavior;

   public void performFly() {
      flyBehavior.fly();
   }

   public void performQuack() {
      quackBehavior.quack();
   }

   public void setFlyBehavior(FlyBehavior fb) {
      flyBehavior = fb;
   }

   public void setQuackBehavior(QuackBehavior qb) {
      quackBehavior = qb;
   }
}

public class MallardDuck extends Duck {
   public MallardDuck() {
      quackBehavior = new Quack();
      flyBehavior = new FlyWithWings();
   }

   public void display() {
      System.out.println("I'm a real Mallard duck");
   }
}

//测试
public class MiniDuckSimulator {
 
    public static void main(String[] args) {
 
        Duck mallard = new MallardDuck();
        mallard.performQuack();
        mallard.performFly();
    }
}

Résumé :

Les modèles de conception sont des idées et des méthodes de programmation très utiles dans le langage Java. Le modèle d'usine, le modèle singleton, le modèle d'observateur et le modèle de stratégie sont tous des modèles de conception couramment utilisés, et leur application pratique peut considérablement améliorer la flexibilité et la réutilisabilité du programme. Nous espérons que le contenu des modèles de conception décrits dans cet article sera utile aux lecteurs pour approfondir leur compréhension et leur application pratique des modèles de conception.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn