// 单例模式 (Singleton Pattern)
public class Singleton {
// 私有静态变量保存唯一实例
private static Singleton uniqueInstance;
// 私有构造函数,防止外部实例化
private Singleton() {}
// 公有静态方法提供全局访问点
public static synchronized Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
// 工厂方法模式 (Factory Method Pattern)
interface Product {
void use();
}
class ConcreteProduct implements Product {
public void use() {
System.out.println("ConcreteProduct is used.");
}
}
abstract class Creator {
public final Product factoryMethod() {
Product product = this.createProduct();
this.postProcess(product);
return product;
}
protected abstract Product createProduct();
protected void postProcess(Product product) {
// Additional processing after product creation
}
}
class ConcreteCreator extends Creator {
protected Product createProduct() {
return new ConcreteProduct();
}
}
// 观察者模式 (Observer Pattern)
interface Observer {
void update(String message);
}
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 message: " + message);
}
}
interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
单例模式 (Singleton Pattern):
uniqueInstance 来保存唯一的实例。getInstance() 来获取唯一的实例,并确保线程安全。工厂方法模式 (Factory Method Pattern):
Product 接口和一个具体的实现类 ConcreteProduct。Creator 中定义了 factoryMethod() 方法,该方法负责创建产品对象。ConcreteCreator 实现了 createProduct() 方法来创建具体的产品对象。观察者模式 (Observer Pattern):
Observer 接口和具体的观察者类 ConcreteObserver。Subject 接口和具体的主题类 ConcreteSubject。上一篇:java list 查找
下一篇:es java api
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站