シングルトンパターン
クラスのインスタンスを1つだけ生成する必要がある場合に使用するパターンです。コンストラクタをprivateにし、staticメソッドでインスタンスを管理します。
public class DatabaseConnection {
private static DatabaseConnection instance;
private DatabaseConnection() {
// 初期化処理
}
public static DatabaseConnection getInstance() {
if (instance == null) {
synchronized(DatabaseConnection.class) {
if (instance == null) {
instance = new DatabaseConnection();
}
}
}
return instance;
}
}
ファクトリーパターン
オブジェクト生成のロジックをカプセル化し、クライアントコードから具体的な実装クラスを隠蔽します。
public interface PaymentMethod {
void processPayment(double amount);
}
public class CreditCardPayment implements PaymentMethod {
@Override
public void processPayment(double amount) {
System.out.println("クレジットカードで支払い: " + amount);
}
}
public class PaymentFactory {
public PaymentMethod createPayment(String type) {
switch(type.toUpperCase()) {
case "CREDIT":
return new CreditCardPayment();
default:
throw new IllegalArgumentException("不明な支払い方法");
}
}
}
オブザーバーパターン
オブジェクト間の1対多の依存関係を定義し、状態変化を自動的に通知します。
import java.util.ArrayList;
import java.util.List;
public class NewsPublisher {
private List<Subscriber> subscribers = new ArrayList<>();
private String latestNews;
public void subscribe(Subscriber s) {
subscribers.add(s);
}
public void publishNews(String news) {
this.latestNews = news;
notifySubscribers();
}
private void notifySubscribers() {
for (Subscriber s : subscribers) {
s.update(latestNews);
}
}
}
public interface Subscriber {
void update(String news);
}