Heim  >  Artikel  >  Java  >  Einführung in die Praxis von Entwurfsmustern in der Java-Sprache

Einführung in die Praxis von Entwurfsmustern in der Java-Sprache

王林
王林Original
2023-06-11 16:09:071139Durchsuche

Praktische Einführung in Designmuster in der Java-Sprache

Designmuster sind eine bewährte Idee und Methode zur Lösung von Softwaredesign- und -entwicklungsproblemen. Sie reduzieren die Komplexität in der Softwareentwicklung und stellen flexiblen, wiederverwendbaren Code bereit. In der Java-Sprache ist die Anwendung von Entwurfsmustern äußerst wichtig. In diesem Artikel werden einige häufig verwendete Entwurfsmuster in der Java-Sprache und ihre praktischen Anwendungen vorgestellt.

  1. Fabrikmuster

Fabrikmuster ist ein Entwurfsmuster zum Erstellen von Objekten. Es kapselt den Objekterstellungsprozess in einer einzigen Klasse, sodass bei Bedarf problemlos neue Instanzen generiert werden können. Das Factory-Muster kann die Codeduplizierung effektiv reduzieren und gleichzeitig mehr Flexibilität bieten. Das Folgende ist ein Beispiel für das Factory-Muster:

//定义接口
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. Singleton-Muster

Das Singleton-Muster ist ein Entwurfsmuster, das sicherstellt, dass eine Klasse nur eine Instanz hat. Es wird typischerweise zur Steuerung von Ressourcen und zur Verwaltung einzelner Objekte verwendet. Das Singleton-Muster in Java kann im Lazy-Stil oder im Hungrigen Stil implementiert werden. Hier ist ein Beispiel für ein Singleton-Muster im Hungry-Stil:

public class Singleton {
   private static Singleton uniqueInstance = new Singleton();
   private Singleton() {} 
   
   public static Singleton getInstance() {
      return uniqueInstance;
   }
}
  1. Observer-Muster

Das Observer-Muster ist ein Muster, bei dem sich ein Objekt (Beobachter genannt) bei einem anderen Objekt (Subjekt genannt) registriert, um Benachrichtigungen zu erhalten, wenn Themen ändern sich. Mit dem Observer-Muster können Sie lose gekoppelte Systeme entwerfen, in denen Objekte miteinander interagieren, ohne dass es zu Kopplungseffekten kommt. Hier ist ein Beispiel für das Observer-Muster:

//定义接口
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. Strategiemuster

Strategiemuster ist ein Muster, bei dem ein Objekt Verhalten in verschiedene Implementierungen unterteilt. Es ermöglicht Ihnen, die Implementierung des Algorithmus zur Laufzeit auszuwählen und bietet so eine größere Flexibilität. Mithilfe von Strategiemustern können Sie wiederverwendbaren Code entwerfen und gleichzeitig Duplikate reduzieren.

//定义接口
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();
    }
}

Zusammenfassung:

Entwurfsmuster sind sehr nützliche Programmierideen und -methoden in der Java-Sprache. Factory-Muster, Singleton-Muster, Beobachtermuster und Strategiemuster sind allesamt häufig verwendete Entwurfsmuster, und ihre praktische Anwendung kann die Flexibilität und Wiederverwendbarkeit des Programms erheblich verbessern. Wir hoffen, dass der in diesem Artikel beschriebene Inhalt der Designmuster den Lesern dabei hilft, ihr Verständnis und die praktische Anwendung von Designmustern zu vertiefen.

Das obige ist der detaillierte Inhalt vonEinführung in die Praxis von Entwurfsmustern in der Java-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn