File tree Expand file tree Collapse file tree 7 files changed +64
-0
lines changed
src/com/anxpp/designpattern/state Expand file tree Collapse file tree 7 files changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ //抽象状态
3+ public interface ISaveData {
4+ void save (Object data );
5+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ //具体状态
3+ public enum SaveBigData implements ISaveData {
4+ instance ;
5+ @ Override
6+ public void save (Object data ){
7+ System .out .println ("保存到文件:" + data );
8+ }
9+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ //环境(Context)
3+ public class SaveDataController {
4+ private ISaveData saveData ;
5+ public void save (String data ){
6+ //为了演示,此处的大的数据其实也是很小的
7+ if (data .length ()<1 <<2 )
8+ saveData = SaveSmallData .instance ;
9+ else if (data .length ()<1 <<4 )
10+ saveData = SaveMiddleData .instance ;
11+ else
12+ saveData = SaveBigData .instance ;
13+ saveData .save (data );
14+ }
15+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ //具体状态
3+ public enum SaveMiddleData implements ISaveData {
4+ instance ;
5+ @ Override
6+ public void save (Object data ){
7+ System .out .println ("保存到Mysql:" + data );
8+ }
9+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ //具体状态
3+ public enum SaveSmallData implements ISaveData {
4+ instance ;
5+ @ Override
6+ public void save (Object data ){
7+ System .out .println ("保存到Redis:" + data );
8+ }
9+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .state ;
2+ public class TestUse {
3+ public static void main (String args []){
4+ String smallData = "小数据" ;
5+ String middleData = "介于小数据和大数据之间的数据" ;
6+ String bifgData = "这里就假定这是一个很大很大很大的数据" ;
7+ SaveDataController saveDataController = new SaveDataController ();
8+ saveDataController .save (smallData );
9+ saveDataController .save (middleData );
10+ saveDataController .save (bifgData );
11+ }
12+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * @author Administrator
3+ * 状态模式
4+ */
5+ package com .anxpp .designpattern .state ;
You can’t perform that action at this time.
0 commit comments