본문 바로가기

Languages/디자인패턴6

[Java] 옵저버(Observer) 패턴 Observer 패턴이란? 옵서버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 즉, 객체의 상태가 변할 경우 연관된 객체들에게 알린다 라는 의미의 패턴으로, 실생활에 비유하자면 구독을 예시로 들 수 있을 것 같다. Observer 패턴 예시 구독자들이 유튜버의 새로운 소식에 대한 알림을 받는다 라는 주제로 예시를 들어보았다. Youtuber 인터페이스 public interface Youtuber { void addSubscriber(Subscriber subscriber); void removeSu.. 2023. 6. 12.
[Java] 데코레이터(Decorator) 패턴 Decorator 패턴이란? 데코레이터 패턴이란 주어진 상황 및 용도에 따라 어떤 객체에 결합을 통해 기능을 동적으로 확장할 수 있게 해주는 패턴이다. Decorator는 '장식하다' 라는 뜻을 가지고 있다. Decorator 패턴은 객체를 점점 꾸미듯이 확장하는 패턴으로 예를 들어 햄버거를 만들 때 참깨빵을 넣고 순쇠고기를 넣고 소스, 양상추 등을 넣고 하듯 객체를 차례대로 만들도록 작성하도록 하는 패턴으로 이해하면 쉽다. Decorator 패턴 예시 다음과 같은 log를 출력하는 프로그램이 있다. 먼저 main 메서드 로직을 보면 다음과 같다. public static void main(String[] args) { new Scaffold( new FullBorder( new SideBorder( n.. 2023. 6. 11.
[Java] 어댑터(Adapter) 패턴 Adapter 패턴이란 어댑터 패턴은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 예를 들어, 실생활에서 전기 콘센트도 서로 맞지 않을 때 중간에 어댑터를 두어서 연결을 할 수 있듯이 서로 맞지 않는 두 가지 객체를 연결해 주는 역할을 하는 패턴이다. Adapter 패턴 예시 public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } .. 2023. 6. 10.
[Java] 싱글톤(Singleton) 패턴 싱글톤 패턴이란 싱글턴 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다 싱글톤 패턴을 적용하지 않으면 public class Main { public static void main(String[] args) { String singleton1 = new String("test"); String singleton2 = new String("test"); if (singleton1 == singleton2) { System.out.println("같음"); } else { System.out.println("다름"); } } // 출력 결과 : 다름 } singleton1과 singleton2는.. 2023. 6. 10.