21xrx.com
2024-12-22 18:58:40 Sunday
登录
文章检索 我的文章 写文章
Java设计模式及实践PDF:学习Java中常用的设计模式
2023-06-15 13:35:46 深夜i     --     --
Java设计模式 单例模式 工厂模式 观察者模式

在Java编程中,设计模式是非常重要的一部分。设计模式可以让程序员更加高效地编写代码,并且增加代码的可读性和可维护性。本文将介绍Java中常用的设计模式,并给出相关实例代码。

1. 单例模式

单例模式是Java中最常用的设计模式之一,它可以确保一个类只有一个实例,并提供一个全局访问点。以下是单例模式的实例代码:


public class Singleton {

  private static Singleton instance = null;

  private Singleton()

  

  public static Singleton getInstance() {

    if (instance == null) {

      instance = new Singleton();

    }

    return instance;

  }

}

在上面的代码中,构造函数是私有的,所以只有一个类实例能够被创建。getInstance()方法用来获取单例的类实例。

2. 工厂模式

工厂模式是另一个常用的设计模式,它提供了一种创建对象的方法,使得客户端不需要知道实际创建的对象是什么。以下是工厂模式的实例代码:


abstract class Animal {

  abstract void makeSound();

}

class Dog extends Animal {

  @Override

  void makeSound() {

    System.out.println("汪汪汪");

  }

}

class Cat extends Animal {

  @Override

  void makeSound() {

    System.out.println("喵喵喵");

  }

}

class AnimalFactory {

  public static Animal createAnimal(String animalType) {

    if (animalType.equalsIgnoreCase("dog")) {

      return new Dog();

    } else if (animalType.equalsIgnoreCase("cat")) {

      return new Cat();

    }

    return null;

  }

}

public class FactoryPatternDemo {

  public static void main(String[] args) {

    Animal dog = AnimalFactory.createAnimal("Dog");

    dog.makeSound();

    Animal cat = AnimalFactory.createAnimal("Cat");

    cat.makeSound();

  }

}

在上面的代码中,抽象类Animal有一个抽象方法makeSound()。然后定义了两个具体的子类:Dog和Cat。AnimalFactory类中的createAnimal()方法用来创建Dog或Cat的类实例。客户端只需要向AnimalFactory请求相应的对象,而不需要知道它是如何创建的。

3. 观察者模式

观察者模式是一种常见的事件处理机制,它基于事件和监听器来处理应用程序的状态变化。以下是观察者模式的实例代码:


import java.util.ArrayList;

import java.util.List;

interface Observer {

  void update(String state);

}

class Subject {

  private List observerList = new ArrayList<>();

  private String state;

  public void attach(Observer observer) {

    observerList.add(observer);

  }

  public void setState(String state) {

    this.state = state;

    notifyObservers();

  }

  private void notifyObservers() {

    for (Observer observer : observerList) {

      observer.update(state);

    }

  }

}

class ConcreteObserver implements Observer {

  private String observerState;

  @Override

  public void update(String state) {

    observerState = state;

    System.out.println("观察者状态为:" + observerState);

  }

}

public class ObserverPatternDemo {

  public static void main(String[] args) {

    Subject subject = new Subject();

    ConcreteObserver observer1 = new ConcreteObserver();

    ConcreteObserver observer2 = new ConcreteObserver();

    subject.attach(observer1);

    subject.attach(observer2);

    subject.setState("状态改变了");

  }

}

在上面的代码中,Subject类是被观察的对象,其状态会随着时间变化。Observer接口定义了Observer的行为,当Subject对象发生状态变化时,会通知Observer对象。在实际代码中,可以有多个Observer对象观察同一个Subject对象。

Java设计模式及实践(Java Design Patterns and Practices)是一本非常有用的书籍,详细介绍了Java中常用的设计模式及其实践。本文简单介绍了三种常用的设计模式,并提供了相关的代码示例。

  
  

评论区

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