[java] 무심코 패턴

자바 프로그래밍을 하다 보면 무심코 사용하는 디자인 패턴이 있습니다.

싱글톤 패턴

가장 널리 쓰이는 패턴 중 하나로, 클래스의 인스턴스를 하나만 생성하여 전역에서 접근 가능하게 합니다.

public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

팩토리 패턴

객체를 생성하는 부분을 캡슐화하여 유연한 결합을 가능하게 하는 패턴입니다.

public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("원을 그립니다.");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("사각형을 그립니다.");
    }
}

public class ShapeFactory {
    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        }
        return null;
    }
}

옵저버 패턴

객체 사이에 일대다 의존 관계를 정의하여, 어떤 객체의 상태가 변할 때 그 객체에 의존하는 다른 객체들이 자동으로 알림을 받고 갱신되는 패턴입니다.

import java.util.ArrayList;
import java.util.List;

public interface Observer {
    void update();
}

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void attach(Observer observer) {
        observers.add(observer);
    }

    public void notifyAllObservers() {
        for (Observer observer : observers) {
            observer.update();
        }
    }
}

이렇게 자바 속에서 무심코 사용하는 디자인 패턴들이 있습니다. 유용하게 활용하여 프로그래밍하시는 것을 권장합니다.