一、前言
设计模式是针对软件开发中常见问题的经验总结,它代表了最佳实践,是软件开发人员必须掌握的核心知识。
本文将介绍几种常见的设计模式,并提供相应的Java应用示例。
二、单例模式
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。
例如,在日志记录或数据库连接等场景中,通常我们只需要一个全局对象。
Java实现示例:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
三、工厂模式
工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但将实际的对象实例化推迟到子类。
例如,在实现一个面向接口编程的系统时,不知道具体要实例化哪个类,可以使用工厂模式。
Java实现示例:
interface Animal {
void speak();
}
class Dog implements Animal {
public void speak() {
System.out.println("Woof!");
}
}
class Cat implements Animal {
public void speak() {
System.out.println("Meow!");
}
}
class AnimalFactory {
public Animal createAnimal(String type) {
if (type.equalsIgnoreCase("Dog")) {
return new Dog();
} else if (type.equalsIgnoreCase("Cat")) {
return new Cat();
}
return null;
}
}
四、观察者模式
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
这个主题对象在状态变化时,会通知所有的观察者对象,使它们能够自动更新自己。
例如,新闻发布系统,当有新的新闻发布时,所有的订阅者都会收到通知。
Java实现示例:
import java.util.Observable;
import java.util.Observer;
class NewsAgency extends Observable {
private String news;
public void setNews(String news) {
this.news = news;
setChanged();
notifyObservers(news);
}
}
class NewsChannel implements Observer {
private String news;
@Override
public void update(Observable o, Object news) {
this.news = (String) news;
}
}
设计模式提供了解决软件设计中常见问题的最佳实践。