[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();
}
}
}
이렇게 자바 속에서 무심코 사용하는 디자인 패턴들이 있습니다. 유용하게 활용하여 프로그래밍하시는 것을 권장합니다.