21xrx.com
2025-06-03 03:46:08 Tuesday
文章检索 我的文章 写文章
Java 设计模式实例:学习 Java 设计模式的有效方式
2023-06-15 00:09:12 深夜i     13     0
Java 设计模式 示例实现

设计模式是软件开发中不可或缺的一部分。设计模式不仅可以帮助开发人员创建高效、可扩展、易维护的代码,还可以为团队提供更好的代码协作和知识共享的机会。Java 是流行的编程语言之一,许多常见的设计模式也适用于 Java。在本文中,我们将介绍一些基本的 Java 设计模式实例,以及如何通过应用这些模式来创建更好的代码。

观察者模式

观察者模式是一种行为型设计模式,它表示对象间的一种一对多的依赖关系,以便在对象状态发生改变时自动通知所有依赖它的对象。下面是一个简单的实现:

interface Subject {
  void registerObserver(Observer observer);
  void removeObserver(Observer observer);
  void notifyObservers();
}
interface Observer {
  void update(String message);
}
class WeatherData implements Subject {
  private ArrayList
  observers;
 
  private String message;
  
  public WeatherData() {
    this.observers = new ArrayList
  ();
 
  }
  
  public void registerObserver(Observer observer) {
    this.observers.add(observer);
  }
  
  public void removeObserver(Observer observer) {
    this.observers.remove(observer);
  }
  
  public void notifyObservers() {
    for (Observer observer : observers) {
      observer.update(this.message);
    }
  }
  
  public void setWeather(String message) {
    this.message = message;
    this.notifyObservers();
  }
}
class CurrentConditionsDisplay implements Observer {
  public void update(String message) {
    System.out.println("当前天气:" + message);
  }
}
public class ObserverPatternExample {
  public static void main(String[] args) {
    WeatherData weatherData = new WeatherData();
    CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay();
    
    weatherData.registerObserver(currentDisplay);
    weatherData.setWeather("晴天");
  }
}

现在我们可以创建一个 WeatherData 对象并向其中注册一个 CurrentConditionsDisplay 对象作为观察者。当使用 setWeather() 方法更新天气信息时,CurrentConditionsDisplay 中的 update() 方法将被调用,以在控制台上显示消息。

单例模式

单例模式是一种创建型模式,它确保只有一个类实例,并提供全局访问点。下面是一个示例实现:

class Singleton {
  private static Singleton instance;
  
  private Singleton()
    // 私有构造函数
  
  
  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
public class SingletonPatternExample {
  public static void main(String[] args) {
    Singleton singleton1 = Singleton.getInstance();
    Singleton singleton2 = Singleton.getInstance();
    
    System.out.println(singleton1 == singleton2);
  }
}

在这个示例中,我们使用了懒加载模式来初始化 Singleton 对象。在 getInstance() 方法中,我们首先检查 instance 对象是否为 null,如果是,则创建一个新的 Singleton 对象。通过将构造函数设为私有,我们可以确保不能在类外部创建 Singleton 对象。

工厂模式

工厂模式是一种创建型模式,它使用工厂类创建对象,而无需暴露对象创建的逻辑。下面是一个简单的示例:

interface Animal {
  String getSound();
}
class Dog implements Animal {
  public String getSound()
    return "汪汪";
  
}
class Cat implements Animal {
  public String getSound()
    return "喵喵";
  
}
class AnimalFactory {
  public Animal createAnimal(String animal) {
    if (animal.equals("dog")) {
      return new Dog();
    } else if (animal.equals("cat")) {
      return new Cat();
    } else
      return null;
    
  }
}
public class FactoryPatternExample {
  public static void main(String[] args) {
    AnimalFactory animalFactory = new AnimalFactory();
    
    Animal dog = animalFactory.createAnimal("dog");
    System.out.println(dog.getSound());
    
    Animal cat = animalFactory.createAnimal("cat");
    System.out.println(cat.getSound());
  }
}

在这个示例中,我们将工厂类 AnimalFactory 用于创建不同的 Animal 对象。通过使用工厂类,我们可以很容易地添加新的 Animal 实现,而不必修改我们的客户端代码。

  
  

评论区

    相似文章