19. 상태 모드(디자인 모드 노트)

2137 단어

장면

  • 엘리베이터의 운행 수리, 정상, 자동 문 닫기, 자동 문 열기, 상향 운행, 하향 운행, 소방 상태
  • 신호등, 신호등, 노란등, 신호등
  • 기업 또는 정부 시스템에서 공문서의 심사 비준 상태
  • 청구서 심사 비준 상태
  • 휴가 신청서 심사
  • 온라인 쇼핑 시 주문 상태
  • 주문
  • 결제
  • 배송 완료
  • 배송 중
  • 수령
  • 호텔 시스템에서 방의 상태 변화
  • 예약
  • 이미 입주
  • 유휴

  • 핵심


    시스템에서 복잡한 객체의 상태 변환과 다양한 상태에서 동작하는 캡슐화된 문제 구조를 해결하는 데 사용됩니다.
  • Context환경류: 환경류 중 하나State의 대상을 유지하고 현재 상태를 정의했다
  • State추상상태류
  • ConcreteState 구체적인 상태 클래스: 하나하나가 하나의 상태에 대응하는 행위를 봉함
  • State.java
    package cn.itcast.day250.state;
    // 
    public interface State {
        public void handle();
    }
    
    FreeState.java
    package cn.itcast.day250.state;
    // 
    public class FreeState implements State {
    
        @Override
        public void handle() {
            System.out.println(" ");
        }
    
    }
    
    BookedState.java
    package cn.itcast.day250.state;
    // 
    public class BookedState implements State {
    
        @Override
        public void handle() {
            System.out.println(" ");
        }
    
    }
    
    CheckedInState.java
    package cn.itcast.day250.state;
    // 
    public class CheckedInState implements State {
    
        @Override
        public void handle() {
            System.out.println(" ");
        }
    
    }
    

    설명: 여기서 우리는 상태 인터페이스를 제시했는데 인터페이스에서 하나의 특정한 상태의 행위이며 동시에 세 가지 다른 실현을 제시했다. 각각 세 가지 다른 상태와 관련된 행위를 대표한다.Context.java
    package cn.itcast.day250.state;
    // : , 
    public class Context {
        private State state;
        
        public void setState(State s){
            System.out.println(" ");
            state = s;
            state.handle();// 
        }
    }
    

    설명: 이것은 상하문 클래스입니다. 이 클래스는 현재 방의 상태를 저장하고 상태 사이의 전환을 완성하는 데 주로 사용됩니다.Client.java
    package cn.itcast.day250.state;
    
    public class Client {
        public static void main(String[] args) {
            Context tx = new Context();
            tx.setState(new FreeState());
        }
    }
    

    좋은 웹페이지 즐겨찾기