Java 设计模式面试题
设计模式是在软件开发中用于解决特定问题的经验总结,是一种可重用的解决方案,可帮助开发人员更有效地编写可维护和可扩展的代码。在面试过程中,设计模式经常是被问及的重要主题之一。本文将介绍几种常见的设计模式面试题,并给出相应的代码示例。
单例模式
单例模式保证一个类只有一个实例,并提供一个全局访问点。在面试中,常常会被问到如何实现单例模式。以下是一个简单的单例模式的实现:
public class Singleton {
private static Singleton instance;
private Singleton() { }
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
工厂模式
工厂模式用于创建对象,将对象的创建和使用分离。在面试中,常常会被问到如何实现工厂模式。以下是一个简单的工厂模式的示例:
public abstract class Animal {
public abstract void sound();
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("汪汪");
}
}
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("喵喵");
}
}
public class AnimalFactory {
public static Animal createAnimal(String type) {
if (type.equals("dog")) {
return new Dog();
} else if (type.equals("cat")) {
return new Cat();
}
return null;
}
}
观察者模式
观察者模式用于在对象之间建立一种一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。以下是一个简单的观察者模式的示例:
import java.util.ArrayList;
import java.util.List;
public interface Observer {
void update(String message);
}
public class Subject {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
public class ConcreteObserver implements Observer {
private String name;
public ConcreteObserver(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println(name + " received a message: " + message);
}
}
结论
以上是几种常见的设计模式面试题的示例代码。在面试中,对于设计模式的理解和实现能力将会是一个重要的考察点。通过了解和掌握各种设计模式的原理和实现方式,能够帮助我们更好地应对面试中的相关问题,并在实际的开发过程中写出更高质量、可维护和可扩展的代码。
参考资料:
- [Java 设计模式(Design Patterns)](
- [Java 设计模式面试题](
















