본문 바로가기
Java/Java이론

자바 디자인 패턴

by P_eli 2023. 11. 30.
728x90
반응형

프로그래밍의 예술 중 하나로 꼽히는 "디자인 패턴"에 대해 이야기해보려고 합니다. 특히 자바 언어에서 자주 활용되는 몇 가지 디자인 패턴에 대해서 알아보겠습니다.

 

1. 싱글톤 패턴 (Singleton Pattern)

디자인에서 "싱글톤"은 유일무이한 존재를 의미합니다. 싱글톤 패턴은 하나의 인스턴스만 생성되도록 보장하며, 이 인스턴스에 대한 전역적인 접근을 허용합니다. 이 패턴을 사용하면 자원 낭비를 방지하고 객체 간의 일관성을 유지할 수 있습니다.

public class Singleton {
    private static Singleton instance;

    private Singleton() {}  // private 생성자로 외부에서의 인스턴스 생성 방지

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

 

2. 팩토리 메서드 패턴 (Factory Method Pattern)

팩토리 메서드 패턴은 객체의 생성을 서브 클래스에서 결정하도록 하는 패턴입니다. 이를 통해 객체 생성의 책임을 서브 클래스로 분리시키고, 코드의 유연성을 높일 수 있습니다.

public interface Product {
    void create();
}

public class ConcreteProduct implements Product {
    @Override
    public void create() {
        System.out.println("Concrete Product created");
    }
}

public interface Creator {
    Product factoryMethod();
}

public class ConcreteCreator implements Creator {
    @Override
    public Product factoryMethod() {
        return new ConcreteProduct();
    }
}

 

3. 옵저버 패턴 (Observer Pattern)

옵저버 패턴은 객체 간의 일 대 다 의존성을 정의하는 패턴입니다. 한 객체의 상태가 변경될 때, 그 객체에 의존하는 다른 객체들에게 자동으로 알림을 전달합니다.

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

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

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

    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

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

// Observer
public interface Observer {
    void update();
}

// ConcreteObserver
public class ConcreteObserver implements Observer {
    @Override
    public void update() {
        System.out.println("State updated");
    }
}

 

이러한 디자인 패턴들은 코드를 보다 효율적이고 유지보수하기 쉽게 만들어주는 도구들입니다. 하지만 항상 적용해야 하는 것은 아닙니다. 상황과 요구사항에 따라 적절한 패턴을 선택하는 것이 중요합니다.

728x90
반응형