21xrx.com
2024-12-23 00:27:40 Monday
登录
文章检索 我的文章 写文章
Java 设计模式实例:学习 Java 设计模式的有效方式
2023-06-15 00:09:12 深夜i     --     --
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 实现,而不必修改我们的客户端代码。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复