2020-03-15

4279 단어
경자 쥐 년 기 묘 월 정 사 일
묘사
방문자 모드 실행
기술 블로그:https://blog.csdn.net/qq_40674583
수필.
방문자 모드
참조 블로그:https://www.jianshu.com/p/1f1049d0a0f4
  • Visitor는 추상적인 방문자로서 서로 다른 역할이 이 대상을 실례화하고 구체적인 실현 클래스를 통해 다른 클래스를 방문할 수 있다
  • public interface Visitor {
    
        //        
        void visit(Engineer engineer);
    
        //       
        void visit(Manager manager);
    
    }
    
  • 방문한 클래스
  • public abstract void accept(Visitor visitor);
    
  • 의 구체적인 실현
  • @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
    //                           ,           。
    
  • 방문자의 구체적인 클래스를 통해 다른 클래스에 접근
  • import java.util.LinkedList;
    import java.util.List;
    
    public class BusinessReport {
    
        private List mStaffs = new LinkedList<>();
    
        public BusinessReport() {
            mStaffs.add(new Manager("  -A"));
            mStaffs.add(new Engineer("   -A"));
            mStaffs.add(new Engineer("   -B"));
            mStaffs.add(new Engineer("   -C"));
            mStaffs.add(new Manager("  -B"));
            mStaffs.add(new Engineer("   -D"));
        }
    
        /**
         *         
         * @param visitor     , CEO、CTO
         */
        public void showReport(Visitor visitor) {
            for (Staff staff : mStaffs) {
                staff.accept(visitor);
            }
        }
    }
    
    

    교체자 모드
    참조 블로그:https://www.jianshu.com/p/3dd7b4e73561
    교체기 모드 (Iterator) 는 집합 대상의 각종 요소에 순서대로 접근하고, 그 대상의 내부 표시를 노출하지 않는 방법을 제공합니다.
  • Iterator 커넥터
  • public interface Iterator{
        public abstract boolean hasNext();
        public abstract Object next();
    }
    
  • 교체된 교체기는 이 인터페이스를 실현하고 이 구체적인 종류는 교체가 필요한 용기에 의존한다.
  • public class BookShelfIterator implements Iterator {
    
        private BookShelf bookShelf;
        private int index;
    
        public BookShelfIterator(BookShelf bookShelf) {
            this.bookShelf = bookShelf;
            this.index = 0;
        }
    
        public boolean hasNext() {
            if (index < bookShelf.getLength()) {
                return true;
            } else {
                return false;
            }
        }
    
    
        public Object next() {
            Book book = bookShelf.getBookAt(index);
            index++;
            return book;
        }
    }
    
  • Aggregate 커넥터
  • public interface Aggregate{
        public abstract Iterator iterator();
    }
    
  • 교체된 클래스가 이 인터페이스를 실현해야 한다
  • public class BookShelf implements Aggregate {
    
        private List books;
    
    
        public BookShelf() {
            this.books = new ArrayList();
        }
    
        public Book getBookAt(int index) {
            return books.get(index);
        }
    
        public void appendBook(Book book) {
            books.add(book);
        }
    
        public int getLength() {
            return books.size();
        }
    
        public Iterator iterator() {
            return new BookShelfIterator(this);
        }
    }
    

    관찰자 모드
    참조 블로그:https://baijiahao.baidu.com/s?id=1639044219412817957&wfr=spider&for=pc
    관찰자 모드(Publish/Subscribe) 모드라고도 불리며 행위형 모드의 일종으로 일대다 의존 관계를 정의하여 여러 관찰자 대상이 특정한 주제 대상을 동시에 감청하도록 한다.이 주제 대상은 상태가 변할 때 모든 관찰자 대상에게 통지하여 그들이 자동으로 자신을 갱신할 수 있도록 한다
    위에서 볼 수 있듯이 이 안에는 두 가지 유형(주제와 관찰자)이 모두 네 가지 역할이 포함되어 있다.
    (1) Subject: 모든 관찰자 대상을 하나의 집합에 저장하여 임의의 관찰자가 있을 수 있고 추상 주제는 하나의 인터페이스를 제공하여 관찰자 대상을 추가하고 삭제할 수 있다.스타가 모든 팬을 한 계정에 저장해 팬 수를 제한하지 않고 신규 팬을 늘릴 수도 있고 블랙 팬을 끌어올릴 수도 있다는 뜻이다.
    (2) ConcreteSubject: 구체적인 주제, 이 역할은 관련 상태를 구체적인 관찰자 대상에 저장하고 구체적인 주제의 내부 상태가 바뀔 때 등록된 모든 관찰자에게 알림을 보낸다.우리 스타들이 움직임이 생기면 팬들에게 소식을 전한다는 뜻이다.
    (3) Observer: 추상 관찰자, 관찰자의 추상 클래스로 주제 변경 알림을 받을 때 자신을 업데이트할 업데이트 인터페이스를 정의합니다.이것이 바로 우리 모든 팬들의 추상이다.
    (4)ConcrereObserver: 구체적인 관찰자, 추상적인 관찰자 정의의 업데이트 인터페이스를 실현하여 주제 변경 알림을 받을 때 자신의 상태를 업데이트합니다.구체적으로 모든 팬들은
    개인적 이해:
  • 정의 추상적 관찰자(Observer): 추상적인 팬, 그 안에 업데이트 추상적인 방법이 있다.데이터를 업데이트하는 데 사용됩니다.
  • 구체적인 관찰자(concreteObserver): 구체적인 팬
  • 정의 추상 테마(Subject): 추상 스타
  • 구체적 주제(ConcreteSubject):구체적 스타
  • 분석 관찰자 모드
    관찰자 모델의 주요 장점은 표시층과 데이터 논리층의 분리를 실현할 수 있고 관찰 목표와 관찰자 사이에 추상적인 결합을 구축하여 방송 통신을 지원할 수 있다는 것이다.그 주요 단점은 하나의 관찰 목표 대상에 직접적이고 간접적인 관찰자가 많으면 모든 관찰자를 통지하는 데 많은 시간이 걸리고 관찰자와 관찰 목표 사이에 순환 의존이 있으면 관찰 목표가 그들 사이를 순환 호출하여 시스템 붕괴를 초래할 수 있다는 것이다.

    좋은 웹페이지 즐겨찾기