이 기사에서는 상태 모드를 기반으로 Java가 구현 한 문서 편집 모드 스위칭 기능에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
패턴 정의
상태 모드 : 객체의 내부 상태가 변경되면 동작을 변경할 수 있고 객체가 클래스가 변경된 것처럼 보입니다.
두 번째 모드의 예
1 패턴 분석
문서 편집 모드의 경우를 사용 하여이 모드를 설명하기 위해 전환합니다.
2 정적 모드 정적 클래스 다이어그램
3 코드 예제
3.1 상태 인터페이스-시계를 만듭니다
package com.demo.state; import com.demo.context.context;/** * * State Interface * * @author */public interface istate {/** * State Transition * * @Param Context */public void convertState (Context Context, int Mode); / ** * 저장 메소드 * * @param 컨텍스트 */ public void save (컨텍스트 컨텍스트); / ** * 메소드 수정 * * @param 컨텍스트 */ public void modify (컨텍스트 컨텍스트); / ** * 새 방법 * * @param 컨텍스트 */ public void add (컨텍스트 컨텍스트); / ** *보기 방법 * * @param 컨텍스트 */ public void view (컨텍스트 컨텍스트);}3.2 컨텍스트 컨텍스트를 만듭니다
package com.demo.context; import com.demo.state.istate;/** * 컨텍스트 환경 * * @author */public class 컨텍스트 {// 미리보기 모드 public static final int preview_mode = 0; // 편집 모드 public static final int edit_mode = 1; // 현재 상태 개인 istate 상태; // 상태 변경 공개 void Changestate (istate state) {this.state = state; } / ** * run * @param mode * / public void dowork (int mode) {system.out.println ( "---------------------------------------------------------------------------------------- this.state.convertstate (this, mode); this.state.add (this); this.state.save (this); this.state.modify (this); this.state.view (this); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 상태 편집 상태 1 Editstate
package com.demo.state; import com.demo.context.context;/*** 편집 모드 상태** @author**/public class editstate emplements istate {/*** state void convertstate (context context, int mode) {if (mode == context.preview_mode) {newState (new extiew_mode); }} / *** 편집 모드의 새 새* / public void add (컨텍스트 컨텍스트) {system.out.println ( "편집 모드 [add] ..."); } / *** 편집 모드 수정* / public void modify (context context) {system.out.println ( "편집 모드 [modify] ..."); } / *** 편집 모드 저장* / public void save (context context) {system.out.println ( "편집 모드 [저장] ..."); } / *** 모드보기 편집* / public void view (context context) {system.out.println ( "편집 모드 [보기] ..."); }}3.4 PreviewState
package com.demo.state; import com.demo.context.context;/*** 미리보기 모드 상태** @author*/public class previewstate emplements istate {/*** state void convertstate (context context, int mode) {context.changestate (new Edittate (new Edittate)); }} / *** 새 미리보기 모드* / public void add (context context) {system.out.println ( "미리보기 모드는 [새] 함수!"); } / *** 미리보기 모드 수정* / public void modify (context context) {system.out.println ( "미리보기 모드는 [modify] 함수!"); } / *** 미리보기 모드 저장* / public void save (context context) {system.out.println ( "미리보기 모드 [저장] 함수!"); } / *** 미리보기 모드보기* / public void view (context context) {system.out.println ( "미리보기 모드 [보기] ..."); }}3.5 클라이언트 테스트 클라이언트
패키지 com.demo; import java.util.random; import com.demo.context.context; import com.demo.state.editstate;/** * 클라이언트 응용 프로그램 * * @author */public class client {/** * @param args */public static void main (string [] args) {context 컨텍스트 = 새로운 컨텍스트 (); context.changestate (new editstate ()); 랜덤 random = new random (); for (int i = 0; i <5; i ++) {int r = random.nextint (2); System.out.println ( "현재 모드 :" + (r == 0? "미리보기 모드": (r == 1? "편집 모드": "")); Context.dowork (R); }}}4 실행 결과
현재 모드 : 편집 모드
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
편집 모드 [신규] ...
편집 모드 [저장] ...
편집 모드 [수정] ...
편집 모드 [보기] ...
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
현재 모드 : 편집 모드
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
편집 모드 [신규] ...
편집 모드 [저장] ...
편집 모드 [수정] ...
편집 모드 [보기] ...
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
현재 모드 : 미리보기 모드
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
미리보기 모드는 [새로운] 함수를 지원하지 않습니다!
미리보기 모드는 [저장] 함수를 지원하지 않습니다!
미리보기 모드는 [modify] 함수를 지원하지 않습니다!
미리보기 모드 [보기] ...
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
현재 모드 : 미리보기 모드
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
미리보기 모드는 [새로운] 함수를 지원하지 않습니다!
미리보기 모드는 [저장] 함수를 지원하지 않습니다!
미리보기 모드는 [modify] 함수를 지원하지 않습니다!
미리보기 모드 [보기] ...
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
현재 모드 : 편집 모드
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
편집 모드 [신규] ...
편집 모드 [저장] ...
편집 모드 [수정] ...
편집 모드 [보기] ...
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
이 패턴의 디자인의 세 가지 원리
1 "개방형"원칙
2 단일 책임 원칙
4 개의 사용법
1 물체의 행동은 상태에서 가져 오며 작동 순간 상태에 따라 동작을 바꿔야합니다.
2 작업에는 거대한 다중 브랜치 구조가 포함되어 있으며이 분기는 물체의 상태에 의해 결정됩니다.
5 상태 모드 정적 클래스 다이어그램
더 많은 Java 관련 컨텐츠를 위해이 사이트에 관심이있는 독자는 "Java 객체 지향 프로그래밍에 대한 소개 및 고급 튜토리얼", "Java 데이터 구조 및 알고리즘에 대한 자습서", "Java Operation Dom Node Skills 요약", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.