Skip to content

Commit ceff7c0

Browse files
committed
状态模式
1 parent 196a445 commit ceff7c0

File tree

7 files changed

+64
-0
lines changed

7 files changed

+64
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
packagecom.anxpp.designpattern.state;
2+
//抽象状态
3+
publicinterfaceISaveData{
4+
voidsave(Objectdata);
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
packagecom.anxpp.designpattern.state;
2+
//具体状态
3+
publicenumSaveBigDataimplementsISaveData{
4+
instance;
5+
@Override
6+
publicvoidsave(Objectdata){
7+
System.out.println("保存到文件:" + data);
8+
}
9+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
packagecom.anxpp.designpattern.state;
2+
//环境(Context)
3+
publicclassSaveDataController{
4+
privateISaveDatasaveData;
5+
publicvoidsave(Stringdata){
6+
//为了演示,此处的大的数据其实也是很小的
7+
if(data.length()<1<<2)
8+
saveData = SaveSmallData.instance;
9+
elseif(data.length()<1<<4)
10+
saveData = SaveMiddleData.instance;
11+
else
12+
saveData = SaveBigData.instance;
13+
saveData.save(data);
14+
}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
packagecom.anxpp.designpattern.state;
2+
//具体状态
3+
publicenumSaveMiddleDataimplementsISaveData{
4+
instance;
5+
@Override
6+
publicvoidsave(Objectdata){
7+
System.out.println("保存到Mysql:" + data);
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
packagecom.anxpp.designpattern.state;
2+
//具体状态
3+
publicenumSaveSmallDataimplementsISaveData{
4+
instance;
5+
@Override
6+
publicvoidsave(Objectdata){
7+
System.out.println("保存到Redis:" + data);
8+
}
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
packagecom.anxpp.designpattern.state;
2+
publicclassTestUse{
3+
publicstaticvoidmain(Stringargs[]){
4+
StringsmallData = "小数据";
5+
StringmiddleData = "介于小数据和大数据之间的数据";
6+
StringbifgData = "这里就假定这是一个很大很大很大的数据";
7+
SaveDataControllersaveDataController = newSaveDataController();
8+
saveDataController.save(smallData);
9+
saveDataController.save(middleData);
10+
saveDataController.save(bifgData);
11+
}
12+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/**
2+
* @author Administrator
3+
* 状态模式
4+
*/
5+
packagecom.anxpp.designpattern.state;

0 commit comments

Comments
(0)