Javaにおける主要デザインパターンの実装方法

シングルトンパターン

クラスのインスタンスを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);
}

タグ: シングルトン ファクトリー オブザーバー Java デザインパターン

6月11日 16:30 投稿