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+
package com.anxpp.designpattern.state;
2+
//抽象状态
3+
public interface ISaveData {
4+
void save(Object data);
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
}
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+
package com.anxpp.designpattern.state;

0 commit comments

Comments
 (0)