라이브러리

[PHP] SplSubject::notify - 관찰자에게 알림




SplSubject::notify


SplSubject는 PHP의 Observer 패턴을 구현하는 인터페이스입니다. Observer 패턴은 객체 간의 의존성을 줄이고, 객체 간의 통신을 가능하게 하는 디자인 패턴입니다. SplSubject는 이 패턴의 Subject 역할을 합니다.

SplSubject::notify는 Observer 패턴의 Subject가 Observer에게 알림을 보낼 때 사용하는 메소드입니다. 이 메소드는 Observer에게 알림을 보내고, Observer가 Subject에 등록된 경우에만 호출됩니다.

예제


#hostingforum.kr
php

// Observer 인터페이스

interface Observer {

    public function update($message);

}



// Subject 클래스

class Subject extends SplSubject {

    public function attach(Observer $observer) {

        $this->attach($observer);

    }



    public function detach(Observer $observer) {

        $this->detach($observer);

    }



    public function notify() {

        foreach ($this->getAttachedObjects() as $observer) {

            $observer->update("알림 메시지");

        }

    }

}



// Observer 구현

class MyObserver implements Observer {

    public function update($message) {

        echo "Observer: $message
";

    }

}



// 예제 코드

$subject = new Subject();

$observer1 = new MyObserver();

$observer2 = new MyObserver();



$subject->attach($observer1);

$subject->attach($observer2);



$subject->notify();



$subject->detach($observer1);



$subject->notify();



결과


#hostingforum.kr


Observer: 알림 메시지

Observer: 알림 메시지

Observer: 알림 메시지



설명


위 예제에서, Subject 클래스는 Observer 패턴의 Subject 역할을 합니다. Observer 인터페이스는 update 메소드를 구현해야 하며, 이 메소드는 Subject가 Observer에게 보낸 알림 메시지를 처리하는 역할을 합니다.

MyObserver 클래스는 Observer 인터페이스를 구현한 클래스입니다. update 메소드는 알림 메시지를 처리하는 역할을 합니다.

예제 코드에서, Subject 인스턴스를 생성하고, Observer 인스턴스를 생성합니다. Subject 인스턴에 Observer 인스턴스를 등록하고, notify 메소드를 호출합니다. Observer 인스턴들은 알림 메시지를 받고, 처리합니다.

detach 메소드를 호출하여 Observer 인스턴스를 Subject 인스턴에서 제거하고, notify 메소드를 호출합니다. 이 경우, Observer 인스턴들은 알림 메시지를 받지 못합니다.

결론


SplSubject::notify 메소드는 Observer 패턴의 Subject가 Observer에게 알림을 보낼 때 사용하는 메소드입니다. 이 메소드는 Observer에게 알림을 보내고, Observer가 Subject에 등록된 경우에만 호출됩니다. Observer 패턴은 객체 간의 의존성을 줄이고, 객체 간의 통신을 가능하게 하는 디자인 패턴입니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 204 페이지

검색

게시물 검색