Python 디자인 모델 의 상태 모델 원리 와 용법 에 대한 상세 한 설명

본 논문 의 사례 는 Python 디자인 모델 의 상태 모델 원리 와 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
상태 모드(State Pattern):대상 의 내 적 상태 가 바 뀌 었 을 때 행동 을 바 꿀 수 있 습 니 다.이 대상 은 종 류 를 바 꾼 것 처럼 보 입 니 다.
다음은 상태 모드 의 demo 입 니 다.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
      
    ――    
    (State Pattern):                    ,              
    :                       ,                        ,            
(               ,                    )
"""
class State(object):
  def __init__(self):
    pass
  def write_program(self, w):
    pass
class Work(object):
  def __init__(self):
    self.hour = 9
    self.curr = ForenoonState()
  def set_state(self, s):
    self.curr = s
  def write_program(self):
    self.curr.write_program(self)
class ForenoonState(State):
  def write_program(self, w):
    if w.hour < 12:
      print "    :%s ,"%w.hour,"    "
    else:
      w.set_state(AfternoonState())
      w.write_program()
class AfternoonState(State):
  def write_program(self, w):
    if w.hour < 17:
      print "    :%s ,"%w.hour,"    ,    "
    else:
      w.set_state(EveningState())
      w.write_program()
class EveningState(State):
  def write_program(self, w):
    if w.hour < 21:
      print "    :%s ,"%w.hour,"   ,   "
    else:
      w.set_state(SleepState())
      w.write_program()
class SleepState(State):
  def write_program(self, w):
    print "    :%s ,"%w.hour,"   ,   "
if __name__=="__main__":
  work = Work()
  work.hour = 9
  work.write_program()
  work.hour = 15
  work.write_program()
  work.hour = 20
  work.write_program()
  work.hour = 22
  work.write_program()

실행 결과:
현재 시간:9 시,원기 백배
현재 시간:15 시,상태 괜찮아,계속 노력
지금 시간:20 시,야근 은?
현재 시간:22 시,안 되 겠 어,잠 들 었 어
상류의 디자인 은 다음 과 같다.

응용 장면:한 대상 의 상태 전환 을 제어 하 는 조건 표현 식 이 너무 복잡 할 때 상태의 판단 논 리 를 서로 다른 상 태 를 나타 내 는 일련의 유형 으로 옮 기 면 복잡 한 판단 논 리 를 간소화 할 수 있다.
(대상 의 행동 이 그 상태 에 달 려 있 고 실행 시간 에 상태 에 따라 그의 행동 을 바 꿔 야 한다)
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기