1. 什么是设计模式?为什么我们需要设计模式?
答案:
设计模式是在软件开发中解决特定问题的最佳实践。它们是在长期软件开发中积累的经验的总结,可以帮助我们更高效地编写可维护、可扩展和可重用的代码。设计模式使代码结构更加清晰,提高了代码的可读性和可维护性,同时也有助于开发人员之间的沟通和协作。
2. 请解释单例模式,并给出一个Java实现示例。
答案:
单例模式确保一个类仅有一个实例,并提供一个全局访问点。
public class Singleton {
private static Singleton instance;
private Singleton() {} // 私有构造方法,防止外部实例化
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
注意:上面的实现是线程安全的,但性能较差。在实际应用中,通常会使用双重检查锁定或静态内部类等方式来实现线程安全且高效的单例。
3. 请解释工厂模式,并给出一个Java实现示例。
答案:
工厂模式用于封装对象的创建过程,将对象的创建与使用分离。
public interface Car {
void drive();
}
public class BMW implements Car {
@Override
public void drive() {
System.out.println("Driving BMW");
}
}
public class CarFactory {
public static Car createCar() {
return new BMW(); // 可以根据需要返回不同的Car实现
}
}
4. 请解释观察者模式,并给出一个Java实现示例。
答案:
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时,它的所有依赖者(观察者)都会自动收到通知并更新。
import java.util.ArrayList;
import java.util.List;
public interface Observer {
void update(String message);
}
public class Subject {
private List<Observer> observers = new ArrayList<>();
private String message;
public void attach(Observer observer) {
observers.add(observer);
}