수색…


소개

디자인 패턴은 프로그래머가 응용 프로그램이나 시스템을 설계 할 때 공통적 인 문제를 해결하는 데 사용할 수있는 형식화 된 베스트 프랙티스입니다.

디자인 패턴은 검증되고 검증 된 개발 패러다임을 제공함으로써 개발 프로세스의 속도를 높일 수 있습니다.

디자인 패턴을 재사용하면 중대한 문제를 일으킬 수있는 미묘한 문제를 예방할 수 있으며 패턴에 익숙한 코더 및 설계자의 코드 가독성이 향상됩니다.

싱글 톤 클래스 예제

자바 싱글 톤 패턴

싱글 톤 패턴을 구현하기 위해 우리는 다른 접근법을 가지고 있지만 모두 다음과 같은 공통 개념을 가지고있다.

  • 다른 클래스에서 클래스의 인스턴스화를 제한하는 전용 생성자.
  • 클래스의 유일한 인스턴스 인 동일한 클래스의 전용 정적 변수입니다.
  • 클래스의 인스턴스를 반환하는 public static 메서드입니다. 전역 액세스입니다.
  • 바깥 세계가 싱글 톤 클래스의 인스턴스를 가져올 수 있도록합니다.
/**
 * Singleton class.
 */
public final class Singleton {

  /**
   * Private constructor so nobody can instantiate the class.
   */
  private Singleton() {}

  /**
   * Static to class instance of the class.
   */
  private static final Singleton INSTANCE = new Singleton();

  /**
   * To be called by user to obtain instance of the class.
   *
   * @return instance of the singleton.
   */
  public static Singleton getInstance() {
    return INSTANCE;
  }
}

옵저버 패턴

관찰자 패턴은 공통적 인 패턴이며 많은 문맥에서 널리 사용됩니다. YouTube에서 실제 사례를 볼 수 있습니다. 채널을 좋아하고이 채널에서 모든 뉴스를 받고 새로운 동영상을보고 싶다면 해당 채널을 구독해야합니다. 그런 다음이 채널에서 뉴스를 게시 할 때마다 귀하 (및 모든 다른 가입자)에게 알림이 전송됩니다.

관찰자는 두 가지 구성 요소를 갖습니다. 하나는 방송사 (채널)이고 다른 하나는 수신자 (귀하 또는 다른 가입자)입니다. 브로드 캐스터는 구독 한 모든 수신자 인스턴스를 처리합니다. 브로드 캐스터가 새로운 이벤트를 발생 시키면 모든 수신기 인스턴스에이를 알립니다. 수신기가 이벤트를 받으면 예를 들어 YouTube를 켜고 새 동영상을 재생하여 해당 이벤트에 반응해야합니다.

관찰자 패턴 구현하기

  1. 방송사는 수신자가 수신 및 수신을 거부 할 수있는 방법을 제공해야합니다. 브로드 캐스터가 이벤트를 발생 시키면 가입자에게 이벤트가 발생했음을 통지 받아야합니다.

    class Channel{
        private List<Subscriber> subscribers;
        public void subscribe(Subscriber sub) {
            // Add new subscriber.
        }
        public void unsubscribe(Subscriber sub) {
            // Remove subscriber.
        }
        public void newEvent() {
            // Notification event for all subscribers.
        }
    }
    
  2. 리시버는 브로드 캐스터의 이벤트를 처리하는 메소드를 구현해야합니다.

    interface Subscriber {
        void doSubscribe(Channel channel);
        void doUnsubscribe(Channel channel);
        void handleEvent();  // Process the new event.
    }
    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow